2016-02-12 38 views
2

我的目標是,我仍然想使用默認的asp.net的MVC id,但我想用一個GUID一個控制器這樣在一個控制器中使用GUID作爲參數?

http://example.com/MyController/Index/387ecbbf-90e0-4b72-8768-52c583fc715b 

這是我的路線

routes.MapRoute(
    name: "Default", 
    url: "{controller}/{action}/{id}", 
    defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional } 
); 

權myController的現在

public ActionResult Index(Guid guid) 
{ 
return View(); 
} 

給我的錯誤

參數字典包含參數「的GUID」非空類型的 一個空條目「的System.Guid」的方法 「System.Web.Mvc.ActionResult指數(的System.Guid)」

我猜這是因爲我在路線上有ID?如何在一個控制器中使用GUID作爲參數,但在應用程序的其餘部分(默認情況下)使用id

回答

6

只要改變從​​參數的名稱id

public ActionResult Index(Guid id) 
{ 
    return View(); 
} 

當綁定的動作,ASP.NET MVC檢查的種類和操作方法的名稱和映射到那些屬於參數由請求提供。由於在路由中使用了術語id,因此必須相應地命名操作的參數。

相關問題