我想“显示”网址基础的动态值,因此网址如下:host.com/SOME_VALUE/{area} / {controller} / {action}。
因此,如果请求没有第一个值(动态值)的url:host.com/ {area} / {controller} / {action},则应调用正确的操作但是在呈现视图时(或者可能)当发生重定向时,应返回正确的第一个值的正确URL。
此解决方案仅用于在URL中显示标识用户登录的指定值,如用户名或公司名称,或与当前会话相关的任何其他值,此值将不会用于限制对操作的访问,因此两个URL应该有效并在同一会话中调用相同的操作:
host.com/ {面积} / {控制器} / {行动} host.com/some_value/{area} / {控制器} / {动作}
有什么建议吗?
答案 0 :(得分:0)
这是完全未经测试但我认为它会起作用......
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"MyRoute", // Route name
"{somevalue}/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
当使用somevalue部分时,是否可以为URL添加额外的静态值?即host.com/users/some_value/area/controller/action。这将使路线映射变得简单,因为您只需要:
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
"LoggedInUsers", // Route name
"Users/{somevalue}/{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
"Default", // Route name
"{controller}/{action}/{id}", // URL with parameters
new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}