19

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

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

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

有没有一种使用剃刀语法的方法可以编译这段代码?

4

2 回答 2

35

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

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

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

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

于 2013-07-17T13:48:38.747 回答
14

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

var url = '@Url.Action("GetOrderDetails", "Home", new { id = "js-id" })'
              .replace("js-id", encodeURIComponent(rowId)); 
于 2014-07-30T06:35:45.477 回答