我有一个混合应用程序,它是经典的asp.net和MVC。它是asp.net 4.5和MVC 4。
问题: 从路线上,我可以很好地完成动作,但是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 /测试/匹配
当我调试我的动作时,我得到以下
guid = null
ccode = test
tab = matched
为什么guid在这里被传递为null?
现在,当我将操作更改为字符串guid 时,我得到它的值就好了(附图像)。我很困惑......
public ActionResult SiteMyHome(string guid, string ccode, string tab)
答案 0 :(得分:0)
这是一个guid问题。我测试的guid不是有效的guid,因为d04e9071-0cdf-4aa8-8f34-b316f9f3c466导致有效的guid。