在Razor中使用JQuery变量

时间:2014-02-07 11:46:54

标签: jquery razor

如何在jquery中使用Url.Action内的jquery变量?

var id = "10";
window.location.href = '@Url.Action("MyAction", "MyController", new { id })';

由于

5 个答案:

答案 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值:

e.g。

var id = "@(myServerValue)";
window.location.href = @Url.Action("MyAction", "MyController", new { Id = myServerValue })) 

如果该值仅为客户端已知,则可以使用客户端替换,如Zaheer Ahmed和Rui建议的那样。

如果你需要处理空案例,并想删除额外的参数,我会尽可能使用正则表达式来匹配替换: