0
我有一個混合的應用程序,這是經典的asp.net和MVC兩者。這是asp.net 4.5和MVC 4路由guid爲空
問題: 從路線,我可以得到的動作就好了,但GUID總是想出空。你看到我的實現中可能缺少的任何東西嗎?問題出在SiteMyHome路線上。
路線
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{*favicon}", new { favicon = @"(.*/)?favicon.ico(/.*)?" });
//Ignore calls to httphandlers
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
RouteConstants.SiteMyHome,
RouteConstants.SiteMyHome + "/{guid}/{ccode}/{tab}",
new { controller = ControllerNames.SiteRouter, action = ActionNames.SiteMyHome, ccode = UrlParameter.Optional, tab = UrlParameter.Optional }
);
//Set the default route
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
);
}
行動
public ActionResult SiteMyHome(Guid? guid, string ccode, string tab)
{
return null;
}
測試 /SiteMyHome/9c95eb0-d8fb-4176-9de0-5b99f8b914db /測試/匹配
當我調試我的行動,我得到foll欠款
guid = null
ccode = test
tab = matched
爲什麼guid在這裏作爲null傳遞?
現在,當我改變行動字符串指導然後我得到它的價值就好(圖片附加)。我很困惑...
public ActionResult SiteMyHome(string guid, string ccode, string tab)
正如你所做的Guid它意味着這個動作參數是可選的可爲空場。因此,您可以嘗試在相關MapRoute中包含「guid = UrlParameter.Optional」,因爲我認爲這可能會解決問題。 –
如果我不讓它爲空,那麼我會得到一個錯誤,因爲null傳遞給動作。錯誤發生後,我將其更改爲可空字段以檢查其值。 –