2011-02-23 94 views
5

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

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;

回答

10

提议InfernalBadger您应该使用load方法:

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

,因为这会d1d2正确编码的参数。但是,只有当你可以传递参数作为查询字符串的一部分,而不是当它们应该成为url本身的一部分时。

所以,如果你希望你的网址是您可以使用:

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

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

,如果你希望你的网址,您不能使用此是:

/bar/foo/1-1-2001/2-2-2001 

@Url方法,与BEGINDATE和endData参数,无法正常工作,因为这是在服务器上执行,之前的页面发送到浏览器。

而你的方法通过使用+操作失败,用户在输入框中输入“特殊字符”(如破折号/)。

4

我将通过负载的数据参数传递两个值(),如果你想从DOM元素获取值?

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