【问题标题】:open a new tab using MVC Razor @Url.Action使用 MVC Razor @Url.Action 打开一个新选项卡
【发布时间】:2015-04-29 01:54:41
【问题描述】:

我正在尝试解决如何在单击链接时打开标签。

这是我试图打开的链接,我已将其设置为这个,但正如您所见,我添加了 target = "_blank",它不会在新标签中打开。

  <div data-callno='@parts.Call_Num' data-url="@Url.Action("GetCallInfo", "CallHandling" , new {target = "_blank"})">
  <div class="callViewSubmit toolbarIcon"></div>
  Test </div>

这会在同一页面上打开,在查看 google 后我注意到我使用的是 URL.ACTION 而不是 HTML.ACTIONLINK。

作为测试,我在页面上尝试了这个,它确实在新标签中打开:

    @Html.ActionLink("New report", "New", "Report", null, new {target = "_blank"})

关于如何使用 Url.Action 方式在新选项卡中打开我的 div 的任何想法。

//新建

这是我用来打开链接的javascript,我能用javascript而不是url.action打开链接吗

    $(document).ready(function () {
    $('.callViewSubmit').click(function () {
        $.ajax({
            type: "GET",
            url: $(this).parent().data("url"),
            data: { callNumber: $(this).parent().data("callno") },
            success: function (data) {
                $("#CallDetail").html(data);
            },
        });
    });
});

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-4 razor


    【解决方案1】:

    如果您在 data-* 属性中分配它(并且您唯一可以修改的是 URI,那么您无法执行任何操作来完成该行为。这需要在访问 @987654322 的代码中进行更改@(以及它如何处理它)。

    【讨论】:

    • 我需要数据 URL,因为我要打开的页面必须显示数据。有没有办法在剃刀视图中做到这一点
    • 您可以控制如何使用&lt;a&gt; 上的target 属性(或处理url 的javascript)打开它的唯一方法。如果您只需要处理 URL,则无法完成。
    • iv 发布了数据的 javascript,有没有机会我可以使用 javascript 在新选项卡上打开它
    • 如何在新标签页上打开它,现在对我来说最好的方法是什么。
    • 第二个@BradChristie。如果您希望 AJAX 的结果在新选项卡中打开,那么通过 AJAX 完成它是没有意义的。只要有一个带有 target="_blank" 的常规旧链接。 AJAX 的唯一目的是将附加数据从服务器带入现有 页面。一般来说,您似乎并不真正理解您在这里处理的任何概念。我建议你退后一步,做更多的研究。
    【解决方案2】:

    如果您需要在新选项卡/窗口中打开 URL,那么 AJAX 不是正确的方法。您仍然可以从 javascript 打开一个新选项卡/窗口。

    $(document).ready(function () {
        $('.callViewSubmit').click(function () {
            window.open($(this).parent().data("url"));
        });
    });
    

    【讨论】:

    • 问题是调用一个参数'callNumber'来传递给数据,但是window.open它只是打开父数据,而在我使用之前:data:{callNumber:$( this).parent().data("callno") },
    • @mali - 如果它是您在控制器上点击的操作方法的参数,那么您需要将其作为您的 Url 的一部分。 @Url.Action("GetCallInfo", "CallHandling" , new {callNumber = parts.Call_Num})。现在,它是 Url 本身的一部分。
    【解决方案3】:

    你可以这样使用:

        Url.RouteUrl("routeName",
    new
    {
      controller = "controllerName",
      action = "ActionName",
      callNumber: "Value"
    });
    

    然后创建链接:

    var link =
                                            "<a data-original-title=\"title\" target='_top' data-toggle=\"tooltip\" data-placement=\"top\" " +
                                            "href=\"" + viewLink +
                                            "\" data-ajax=\"true\" data-ajax-method=\"GET\" data-ajax-mode=\"replace\" " +
                                            "data-ajax-update=\"#CallDetail\" >" + This is link;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-05
      • 2011-09-07
      • 1970-01-01
      相关资源
      最近更新 更多