我在嘗試實現分頁支持後出現此錯誤。對於控制器類型'DinnersController'的當前操作索引'Index'在以下操作方法之間不明確
我對HTML教程的這一步:http://nerddinnerbook.s3.amazonaws.com/Part8.htm
我在嘗試實現分頁支持後出現此錯誤。對於控制器類型'DinnersController'的當前操作索引'Index'在以下操作方法之間不明確
我對HTML教程的這一步:http://nerddinnerbook.s3.amazonaws.com/Part8.htm
您得到的錯誤告訴ASP.NET MVC已經找到兩個具有相同名稱的操作,並且無法選擇使用哪一個。
如果你在你的DinnersController.cs
兩隻指數-操作:
public ActionResult Index() {
和:
public ActionResult Index(int? page) {
那麼你應該刪除的第一個動作。因爲第二個是第一個的'更新'版本。 第二動作接受請求到:?
/晚餐
/晚餐頁= 2
/晚餐/索引
/晚餐/索引頁= 2
隨着我的變化ň的RegisterRoutes也接受請求:
/晚餐/頁/ 2
您可以有兩個操作具有相同的名稱,提供一個用於保存(回傳),在那裏你裝飾用的節能行動[AcceptVerbs(HttpVerbs.Post)]
或只是[HttpPost]
由於絕大多數博客,書籍和文檔都介紹了UrlParameter.Optional作爲「保存額外路線」的方法,因此,恕我直呼人員會這樣做「2獲取方法,同名,不同簽名」。因此,對於經典「public ActionResult List()」路由匹配他們會說添加一個路由的UrlParameter枚舉,如:routes.MapRoute(「simple」,「{controller}/{action}/{id}」, new {id = UrlParameter.Optional});然後他們會向你展示一個「public ActionResult List(int?id)」。他們幾乎從不說明的是,你必須刪除原來的「ActionResult List()」方法才能工作。 – rism
MVC不支持的操作方法重載的控制器。在同一個控制器上不可能有兩個具有不同方法簽名的Index()操作。
爲了使您正在測試工作的例子,您必須刪除不接受任何參數的Index()操作,並將其替換爲以可爲空的int作爲參數的操作。
如果MVC支持重載操作,那將會很不錯。我希望能夠在我的動作的多個版本之間進行切換,比如通過使用[PriorityAttribute(10)],以便首先執行此操作。然後,我可以從數據庫配置或者根據需要更改該號碼。 –
您能否提供實際的錯誤輸出和堆棧跟蹤?否則,很難說出應用程序拋出錯誤時你在哪裏以及在做什麼。 – Maciej