Razor mvc 3 + jquery + Url Action + Partial Views

时间:2011-02-23 16:45:48

标签: jquery asp.net-mvc-3 razor

我有一个关于jQuery + Razor的问题..我想使用razor和@ Url.Action构建一个javascript变量,html属性将是输入值。 像这样:

var d1 = $('#d1').val();
var d2 = $('#d2').val();
var url = "@Url.Action("Links", "PartialAccount", new { beginDate = "d1", endDate = "d2" })"
$("#links").fadeOut("slow").load(url).fadeIn("slow");

我该怎么做?

下面是否相同?
var url = "/PartialAccount/Links/?beginDate=" + d1 + "&endDate=" + d2;

2 个答案:

答案 0 :(得分:10)

您应该使用InfernalBadger建议的load方法:

load('@Url.Action("Links", "PartialAccount")', { beginDate: d1, endDate: d2})

因为这会正确编码d1d2中的参数。但是,只有当您可以将参数作为查询字符串的一部分传递时,才会将它们作为网址本身的一部分传递。

如果你想要你的网址,你可以使用:

 /bar/foo?beginDate=1-1-2001&endDate=2-2-2001

(请注意,日期中的/将被编码)

如果您希望自己的网址为:

,则无法使用此功能
/bar/foo/1-1-2001/2-2-2001

使用beginDate和endData参数的@Url方法不起作用,因为这是在将页面发送到浏览器之前在服务器上执行的。

使用+运算符的方法失败,用户在输入框中输入“特殊字符”(如破折号/)。

答案 1 :(得分:4)

如果你想从dom元素中获取值,我会通过load()的data参数传递这两个值吗?

$("#links").fadeOut("slow").load(url, { beginDate: d1, endDate: d2}).fadeIn("slow");