2014-02-21 149 views
0

应该是一个简单的问题,但我不知道为什么它这样。无法解析符号@ Url.Action

在我的ASP.NET MVC 5网站中,我有一个网格简单视图,以及一个调用js函数的单元动作,它向这个函数发送一些参数。

function OnCellClick(param1, param2) { 
     var urlAJAX = @Url.Action("GetJson", "PosicaoEstoque", new { p1 = param1 , p2 =param2}); } 

所以,像这样,我得到'无法解析符号'为param1和param2。 我该如何解决它?

+0

hi @ggui,我只是好奇,使用@Satpal答案中的代码,你真的可以在'GetJson'方法中获得'p2'的值吗? – Lin

回答

4

您可以使用占位符。使用占位符参数生成URL,然后用PARAM代替他们

function OnCellClick(param1, param2) { 
    var urlAJAX = '@Url.Action("GetJson", "PosicaoEstoque", new { p1 = -1 , p2 = -2})'; 
    urlAJAX = urlAJAX.replace('-1', param1).replace('-2', param2); 
} 
+0

+1为好的答案 – ramiramilu

+0

是该函数被称为窗体客户端,你是从服务端分配的URL。所以变量param1和param2不会在javascript中可用。所以最好有占位符并替换它们 – Thanigainathan

+0

hi @Satpal,很好的答案。但我想知道OP如何在action方法中获得参数'p2'。 因为它会生成类似/ PosicaoEstoque/GetJson的URL?p1 = aaa & p2 = bbb。 – Lin

1

不使用Url.Action象下面这样:

var urlAJAX = 'PosicaoEstoque/GetJson?p1=' + param1 + '&p2=' + param2; 
1

您的问题是,你混合服务器端和客户端的代码。您不能简单地将JavaScript变量放在Url.Action()中,因为它在服务器端运行。你可以做的是将一些虚拟值作为参数,并在生成的URL上调用JavaScript的replace()函数。

查询this仅供参考。