使用JavaScript变量作为路由参数

时间:2017-06-01 08:04:32

标签: javascript c# asp.net

我尝试在API路由的id参数中添加$(this).prev("input").val(),但我不知道如何停止C#部分,我想到了<text></text>@:但是没有这样的工作。

任何人都有诀窍? (考虑写URL而不是使用RouteURL功能,但我认为这不是一个好的编程方式)

$.ajax({
   url: '@Url.RouteUrl("IsTranslated", new { id = <text>$(this).prev("input").val()</text> }, new {market=@ViewBag.market })

 // [...]
})

1 个答案:

答案 0 :(得分:3)

你不能注入这样的JavaScript值(记住,Razor代码是在服务器端评估的)。你可以做的是使用你的帮助器来构建一个“模板”字符串,并替换id值:

var template = '@Url.RouteUrl("IsTranslated", new { id = 0 }, new { market=@ViewBag.market })';

var id = $(this).prev("input").val();

var url = template.replace('id=0', 'id='+id);

$.ajax({
   url: url
   // [...]
})

当然,这假定帮助程序生成了一个查询字符串值。如果没有,这个可能工作:

var template = '@Url.RouteUrl("IsTranslated", new {}, new { market=@ViewBag.market })';

var id = $(this).prev("input").val();

var url = template.replace('IsTranslated', 'IsTranslated?id='+id);

$.ajax({
   url: url
   // [...]
})