如何在jquery中使用Url.Action
内的jquery变量?
var id = "10";
window.location.href = '@Url.Action("MyAction", "MyController", new { id })';
由于
答案 0 :(得分:3)
尝试通过放置令牌替换功能:
var id = "10";
var actionUrl = "@Url.Action("MyAction","MyController", new { Id= "TabId" })";
window.location.href = actionUrl.replace("TabId", id);
答案 1 :(得分:0)
你不能在Razor中使用jQuery变量 你不能在剃刀中使用javascript变量的原因是剃刀在服务器中运行。 Javascript在客户端运行。
然而,您可以将该网址存储在javascript变量中,然后使用它来构建您需要的特定网址,即:
var url = '@Url.Action("MyAction", "MyController")';
window.location.href = url + "?id=" + id;
如果你需要传递几个参数并且你不想处理用?param1 = X& param2 = Y等创建一个字符串,你可以使用jQuery的param方法,即:
window.location.href = url + "?" + $.param({id:10, param2:"hello"});
$.param({id:10, param2:"hello"})
返回id = 10& param2 = hello
答案 2 :(得分:0)
如果我理解你的问题是正确的.. 为了实现这一点,我将使用您的jQuery调用Ajax到Razor页面,将您的jQuery参数作为GET / POST传递,然后在Razor页面上检索GET / POST并通过Ajax传回一些内容。
答案 3 :(得分:0)
在浏览器中评估Jquery,javascript语句和变量。 Razor在Web服务器中进行评估。所以你不能做你的意思。但是如果你在一个剃刀变量中设置值,你可以在剃刀和javascript代码上使用它。
答案 4 :(得分:0)
只是为了完成一组可能的答案,如果你的变量值是服务器端已知的(你还没有澄清那一点),你也可以在你的javascript中注入Razor值:
var id = "@(myServerValue)";
window.location.href = @Url.Action("MyAction", "MyController", new { Id = myServerValue }))
如果该值仅为客户端已知,则可以使用客户端替换,如Zaheer Ahmed和Rui建议的那样。
如果你需要处理空案例,并想删除额外的参数,我会尽可能使用正则表达式来匹配替换: