ASP.NETMVCUrl.Action和路由名称值我正在使用asp.netmvc2并根据路由创建本地化。我的路线如下:{culture}/{controller}/{action}我转到我的家庭控制器:en/Home/Index我的家庭控制器视图有一个指向其他控制器的链接:产品关于第一个链接生成代码:/en/Products/Prods但第二个链接生成:/Home/Index当我传入参数操作时,我无法理解为什么Url。当值为Index时,Action会跳过{culture}路由参数吗?我究竟做错了什么?路由配置:routes.IgnoreRoute("{resource}.axd/{*pathInfo}");routes.MapRoute("Login",//路由名称"{controller}/Index",//带参数的URLnew{controller="Login",action="Index"}//Parameterdefaults).RouteHandler=newSingleCultureMvcRouteHandler();routes.MapRoute("Default",//路由名称"{controller}/{action}/{id}",//带参数的URLnew{controller="Home",action="Index",id=UrlParameter.Optional}//参数默认值);thenforeach(Routerinroutes){if(!(r.RouteHandler是SingleCultureMvcRouteHandler)){r.RouteHandler=newMultiCultureMvcRouteHandler();r.Url="{culture}/"+r.Url;if(r.Defaults==null){r.Defaults=newRouteValueDictionary();}r.Defaults.Add("文化","en");if(r.Constraints==null){r.Constraints=newRouteValueDictionary();}r.Constraints.Add("culture",newCultureConstraint(cultures));感谢您的帮助生成URL时,最好的选择是始终使用路由名称,因为这样您就不会深入了解用于选择将用于生成URL的路由的算法的微妙之处我的建议是,如果您不使用Url.Action,则使用Url.RouteUrl,它允许您指定应该用于构造URL的路由的名称。通过始终使用路由名称,您还可以使代码对更改更加健壮,例如您可以添加新路由而不必担心它们会破坏您现有的URL生成代码。出于构建Url.Action链接的目的,任何不带id标记的Index操作都将匹配Login路由。登录路由使用SingleCultureMvcRouteHandler,因此文化不会预先附加到这些链接。以上就是C#学习教程的全部内容:ASP.NETMVCUrl.Action和路由名称取值分享。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,并不代表侵权,如有侵权,请点击右边联系管理员删除。如需转载请注明出处: