使用Url.Action和jquery href attr生成链接

时间:2016-03-17 07:47:02

标签: javascript jquery asp.net-mvc

我正在尝试使用以下

生成链接
$(this).parent().attr('href', '@Url.Action("Create", "Home"' + '?clientId=' + clientId + '&clientName=' + clientName);

某处我读到我需要将此Url.Action与控制器和操作隔离到变量中,所以我尝试了这个

var a = '@Url.Action("Create", "Home"';
$(this).parent().attr('href', a + '?clientId=' + clientId + '&clientName=' + clientName);

但这仍然无效。 在浏览器中我得到了

  

http://localhost:1328/Home/Index2/@Url.Action%28%22Create%22,%20%22Home%22?clientId=181&clientName=undefined

2 个答案:

答案 0 :(得分:2)

另一种选择是存储具有data-*属性的网址并访问它们。在视图中,您可以添加以下属性:

data-url='@Url.Action("Create", "Home")'

现在您可以使用以下命令在脚本中访问它:

var base = $(this).data('url');
$(this).parent().attr('href', base + '?clientId='+ clientId +'&clientName=' + clientName);

答案 1 :(得分:1)

您的脚本应位于Razor页面上,以使@Url.Action帮助程序正常工作。

当你把它放在那里时,这应该有效:

//this line should generate /Home/Create string
var urlNoParam = '@Url.Action("Create", "Home")';
//and here you just add params as you want
$(this).parent().attr('href', urlNoParam  + '?clientId=' + clientId + '&clientName=' + clientName);