我注意到做@Url.Action("myAction", new { param1 = 123, param2 = 456})
爲我提供了一個無效的URL Home/myAction?param1=123&param2=456
。使用MVC3 @ Url.Action的JQuery加載不能正確傳遞參數
我試圖做
$("#myAjaxDiv").load(url);
但只有param1
在操作方法得到填充。
當我刪除&
並使它只是&
然後它的工作,但做一個字符串替換是超級哈克。
url = url.replace("&", "&");
我在這裏錯過了什麼嗎?
編輯:根據要求我包括我的一些示例應用程序。 (您可以創建一個新的MVC應用程序,只需添加這很快看到自己)
控制器:
public ActionResult AjaxTest(int? year, int? month)
{
ViewBag.Message = string.Format("Year: {0}, Month: {1}", year.HasValue ? year.ToString() : "no year", month.HasValue ? month.ToString() : "no month");
return PartialView("AjaxTest");
}
AjaxTest查看:
@ViewBag.Message
索引視圖:
<script>
$(function() {
var url="";
$("#noParams").click(function() {
url = "Home/AjaxTest";
$("#ajaxy").load(url)
$("#url").text(url);
});
$("#yearParam").click(function() {
url = "Home/AjaxTest?year=2012";
$("#ajaxy").load(url)
$("#url").text(url);
});
$("#yearAndMonthParam").click(function() {
url = "Home/AjaxTest?year=2012&month=10";
$("#ajaxy").load(url)
$("#url").text(url);
});
$("#generated").click(function() {
url = "@(Url.Action("AjaxTest", new { year=2012, month=10}))";
$("#ajaxy").load(url);
$("#url").text(url);
});
});
</script>
<a id="noParams" href="#">No Params</a> <br />
<a id="yearParam" href="#">Year Param</a> <br />
<a id="yearAndMonthParam" href="#">Year and Month Param</a> <br />
<a id="generated" href="#">Generated</a> <br />
<div id="ajaxy">
</div>
<div>
URL: <span id="url"></span>
</div>
這是奇怪的,看起來你是不是唯一的一個... http://stackoverflow.com/questions/2898855/built -in-method-to-encode-andpersands-in-urls-returned-from-url-action – xandercoded
你可以發表你如何填充你的'url'參數嗎?我猜你錯過了一個'Html.Raw()'的地方... – nemesv