所以,我有如下問題ASP.NET,MVC - 爲什麼ActionResult的方法詢問默認的控制參數
我有一個觀點ActionResults方法: 均位於一個控制器 - TestController
public override ActionResult Index(int pageNumber, int pageSize, string nothing)
{
...
}
public ActionResult getAJAX()
{
...
}
我的世界文件的.asax:
routes.MapRoute(
"getAJAX",
"{controller}/getAJAX",
new { action = "getAJAX" }
);
routes.MapRoute(
"Test",
"{controller}/{action}/{id}",
new { controller = "Test", action = "Index", id = UrlParameter.Optional, pageNumber = 1, pageSize = 50 }
);
如果我打開site.com/TestController/getAJAX
- 我收到以下錯誤
參數字典包含參數非空類型「System.Int32」的「PAGENUMBER」的方法「System.Web.Mvc.ActionResult指數(的Int32,的Int32,System.String)」
一個空條目
如果開site.com/TestController/getAJAX/1
- 一切都OK
爲什麼getAJAX
要求其在其他方法參數?
如果你去'〜/測試/ getAJAX'會發生什麼? –
你的第一個路由定義期望第一個段是控制器名稱,所以要調用它你需要'.../Test/getAjax'(我假設你真正想要的是'url:「/ getAJAX」,默認值:new { controller =「Test」,action =「getAJAX」} –
爲什麼你的'Index'方法是虛擬的?控制器不應該彼此繼承(除非它們被專門設計爲「基礎」控制器。 – Dai