我有一个关于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;
答案 0 :(得分:10)
您应该使用InfernalBadger建议的load
方法:
load('@Url.Action("Links", "PartialAccount")', { beginDate: d1, endDate: d2})
因为这会正确编码d1
和d2
中的参数。但是,只有当您可以将参数作为查询字符串的一部分传递时,才会将它们作为网址本身的一部分传递。
如果你想要你的网址,你可以使用:
/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");