作为FormExtensions.BeginForm()方法的I用户,我遇到了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”无效。
如何获取包含控制器名称的网址? ( “/主页”)
答案 0 :(得分:1)
您可以在默认路线
之前添加其他路线定义routes.MapRoute(
name: "Home",
url: "Home/{action},
defaults: new { controller = "Home", action = "Index" }
);
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
请注意,不需要可选的{id}
段,因为如果提供了该段,则控制器和操作名称将包含在网址中。