关于网友提出的“关于AspNet MVC中关与HtmlActionLink和UrlAction生成路由地址的问题”问题疑问,本网通过在网上对“关于AspNet MVC中关与HtmlActionLink和UrlAction生成路由地址的问题”有关的相关答案进行了整理,供用户进行参考,详细问题解答如下:
问题:关于AspNet MVC中关与HtmlActionLink和UrlAction生成路由地址的问题
描述:项目中有区域UserManager,其下有网页对应的Action Create,该区域的路由注册是这样:
context.MapRoute(
"UserManager_default",
"UserManager/{controller}/{action}/{id}",
new { action = "Index", controller = "Users", id = UrlParameter.Optional }
);
Global中的注册代码是:
AreaRegistration.RegisterAllAreas();
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
(1):问题是在Create中使用ActionLink和Url.Action生成默认区域中的某Action(例如Account控制器的Logout),为什么生成的地址是/UserManager/Account/Logout。
(2):如果区域的路由注册是这样:context.MapRoute(
"UserManager_default",
"{area}/{controller}/{action}/{id}",
new { action = "Index", controller = "Users", area="UserManager" id = UrlParameter.Optional }
);
这么写正确吗,进入项目后地址是http://localhost:XXXX,页面会跑到UserManager/Users/Index,这个是因为Area中的默认路由设置导致的吗?
(3):怎么设置区域(有名称的区域和默认区域)中的路由注册才能在各个区域(有名称的/默认的)中自由定位到其他Action(可能是不同区域)就是获取URL,
解决方案1:1:因为 "UserManager/{controller}/{action}/{id}",前面加了UserManager。
2:对。因为你没有给地址,所以就执行默认地址。
3:@Url.Action("Index", "Home", new { area = "UserManager" })
以上介绍了“关于AspNet MVC中关与HtmlActionLink和UrlAction生成路由地址的问题”的问题解答,希望对有需要的网友有所帮助。
本文网址链接:http://www.codes51.com/itwd/1216315.html