【问题标题】:Using Url.Action in javascript在 JavaScript 中使用 Url.Action
【发布时间】:2014-07-30 14:35:45
【问题描述】:

我正在尝试使用 Url.Action 方法为 ajax 调用正确生成所需的 Url,但在尝试构建 RouteValues 时遇到问题,这是代码的问题行:

var url = @Url.Action("ViewFile", "Default", new { itemId = $(this).data("itemid") });

如您所见,我正在尝试分配 JQuery $(this).data("itemid") 的结果 到 RouteValues 中的itemId

有没有办法使用剃刀语法来编译这段代码?

【问题讨论】:

    标签: c# javascript jquery asp.net-mvc razor


    【解决方案1】:

    您将客户端与服务器端混淆了。试试这样的:

    var url = '@Url.Action("ViewFile", "Default")?itemId=' + $(this).data("itemid");
    

    当您使用 razor 视图引擎编写 @ 时,您正在编写一条指令,该指令将在此命令结束时在服务器端进行处理。在您的情况下,您想在来自 javascript 的 url 中添加一个参数,因此,只需在客户端将值与@Url helper 生成的 url 连接即可。

    PS:我假设您使用的是默认路由表。

    【讨论】:

    • 啊,服务器端代码执行时Jquery当然不会运行,我真傻。谢谢。 [羞愧地低着头]
    • 请注意,这不适用于视图外的 javascripts
    【解决方案2】:

    另一种方法是创建一个占位符,然后替换它:

    var url = '@Url.Action("GetOrderDetails", "Home", new { id = "js-id" })'
                  .replace("js-id", encodeURIComponent(rowId)); 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-21
      • 2017-09-20
      • 2022-01-19
      相关资源
      最近更新 更多