【问题标题】:How to pass the action and controller to the @Url.action call如何将动作和控制器传递给@Url.action 调用
【发布时间】:2022-12-15 22:57:08
【问题描述】:

我想将动作名称和控制器名称作为变量传递给 Javascript 函数中的 @Url.action 调用。有没有办法做到这一点?

function list_onSelectionChanged(e) {
    var strActionName = "Map";
    var strControllerName = "PMO";
    $("#content").load("@Url.Action(strActionName,strControllerName)");
}

【问题讨论】:

    标签: javascript asp.net-core url.action


    【解决方案1】:

    你不能通过他们从客户端代码以这种方式是因为服务器端代码此时已经运行。在服务器端操作中直接指定它们:

    function list_onSelectionChanged(e) {
      $("#content").load("@Url.Action("Map", "PMO")");
    }
    

    请注意,它好像由于嵌套的双引号,语法将失败。但是,请记住,Razor 解析器将服务器端代码与客户端代码分开识别。所以这是整个服务器端操作:

    Url.Action("Map", "PMO")
    

    结果该操作的一部分被发送到客户端代码:

    $("#content").load("result_of_server_side_operation");
    

    【讨论】:

    • 感谢你的回复。我能够按如下方式修改我的脚本: function list_onSelectionChanged(e) { var url = e.addedItems[0].path; $.get(url, function (data) { $("#content").html(data); }); }
    【解决方案2】:

    我能够按如下方式修改脚本:

    function list_onSelectionChanged(e) {
        var url = e.addedItems[0].path;
        $.get(url, function (data) {
            $("#content").html(data);
        });
    }
    

    更简单:

    $("#content").load(url);

    这允许为 url 传递变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 2014-09-09
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多