我尝试在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 })
// [...]
})
答案 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
// [...]
})