【发布时间】:2018-04-26 22:53:33
【问题描述】:
作为 FormExtensions.BeginForm() 方法的用户,我遇到了 UrlHelper.GenerateUrl() 方法的不令人满意的行为。
有标准路由:
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
以下方法调用返回“/”
//Request.RawUrl == "/Home"
UrlHelper.GenerateUrl(
routeName: null,
actionName: null,
controllerName: null,
routeValues: null,
routeCollection: RouteTable.Routes,
requestContext: Request.RequestContext,
includeImplicitMvcValues: true
);
但是,如果 Home 控制器未在路由中设置为默认值,则上述方法调用会返回“/Home”,这是我想要的行为。
设置方法参数 actionName = "Index" 和 controllerName = "Home" 没有帮助。
我应该怎么做才能获得包含控制器名称的 url? ("/首页")
【问题讨论】:
-
只需从默认值中删除
controller = "Home" -
重点是同时作为默认使用
-
然后你总是可以用
url: "Home/{action}/{id}",创建一个新的路由定义(在默认之前) -
@StephenMuecke 它有效,非常感谢:) 我刚刚添加了默认控制器和操作。如果需要,请将其发布为答案。完整的路由定义:routes.MapRoute(name: "Home", url: "Home/{action}/{id}", 默认值:new { controller = "Home", action = "Index", id = UrlParameter.Optional } );
标签: asp.net-mvc asp.net-mvc-5 asp.net-core-mvc