Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在javascript中使用Url.Action_C#_Javascript_Jquery_Asp.net Mvc_Razor - Fatal编程技术网

C# 在javascript中使用Url.Action

C# 在javascript中使用Url.Action,c#,javascript,jquery,asp.net-mvc,razor,C#,Javascript,Jquery,Asp.net Mvc,Razor,我正在尝试使用Url.Action方法为ajax调用正确生成所需的Url,但在尝试构建RouteValue时遇到了问题,下面是问题代码行: var url = @Url.Action("ViewFile", "Default", new { itemId = $(this).data("itemid") }); 如您所见,我正在尝试分配JQuery$(this.data(“itemid”) 到路由值中的itemId 有没有一种方法可以使用razor语法来编译此代码?您把客户端和服务器端搞混了。

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

var url = @Url.Action("ViewFile", "Default", new { itemId = $(this).data("itemid") });
如您所见,我正在尝试分配JQuery
$(this.data(“itemid”)
到路由值中的
itemId


有没有一种方法可以使用razor语法来编译此代码?

您把客户端和服务器端搞混了。试着这样做:

var url = '@Url.Action("ViewFile", "Default")?itemId=' + $(this).data("itemid");
当您使用razor view engine编写
@
时,您正在编写一条指令,该指令将在该命令结束时在服务器端进行处理。在您的例子中,您希望在来自javascript的url中添加一个参数,因此,只需在客户端使用
@url
帮助程序生成的url解析该值


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

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

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

啊,当然当服务器端代码执行时Jquery不会运行,我真傻。谢谢[羞愧地垂下头]提醒一下,这对视图之外的javascripts不起作用