2011-02-23 93 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");