没有控制器名称的MVC多个默认路由

帕卡什

我有两个控制器,一个叫做Dashboard,另一个叫做DashboardCash。现在,我的应用程序可以由两种类型的用户访问,一种类型的用户只能访问Dashboard(类型A用户),而其他类型的用户只能访问DashboardCash(类型B用户)。为了确保我已经放置了登录页面。

我想做的是,当Type A用户成功登录后,我想给他们显示不带控制器名称的url,http://example.com而不是向其显示诸如的控制器名称http://www.example.com/Dashboard对于B型用户,我想向他们显示相同的内容,http://www.example.com但是在这里我要替换DashboardCash。

当前,我在Global.asax文件中定义了以下映射代码:

routes.MapRoute(
     "Default", // Route name
     "{controller}/{action}/{id}", // URL with parameters
     new { controller = "Dashboard", action = "Index", id = UrlParameter.Optional
     }, // Parameter defaults
     new string[] { "Merit.Traveller.BMS.Controllers" });

这段代码对于Dashboard正常工作,现在我想对DashboardCash做同样的事情。

依斋·加拉策

编写一个自定义路由约束,使路由根据用户类型进行匹配。

实现以下接口

public interface IRouteConstraint
{
     bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection);
}

然后在路由中使用它,如下所示:

routes.MapRoute(name: "newRoute1",
  url: "{controller}/{action}/{id}",
  defaults: new { controller = "Dashboard", action = "Index" },
  constraints: new { name = new UserTypeARouteConstraint() }
);

编辑-根据下面的问题,这里有更多详细信息

这就是你的第二条路线

routes.MapRoute(name: "newRoute2",
  url: "{controller}/{action}/{id}",
  defaults: new { controller = "DashboardCash", action = "Index" },
  constraints: new { name = new UserTypeBRouteConstraint() }
);

这就是约束的样子

public class UserTypeARouteConstraint : IRouteConstraint
{
     bool Match(HttpContextBase httpContext, Route route, string parameterName, RouteValueDictionary values, RouteDirection routeDirection)
     {
         return IsUserOfTypeA(httpContext);
     }

     private bool IsUserOfTypeA(HttpContextbase httpContext)
     {
         // custom logic to figure out the user group
     }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

.net mvc路由默认控制器/操作,但没有默认参数

来自分类Dev

从默认路由C#MVC中排除控制器

来自分类Dev

如何在控制器ASP.NET MVC 5上禁用默认路由

来自分类Dev

我如何配置ASP.NET Core路由以路由到控制器(没有可选动作)(如果存在),然后回退到默认路由?

来自分类Dev

Laravel 4控制器,处理默认路由?

来自分类Dev

没有控制器或动作名称的ASP.NET MVC路由

来自分类Dev

Rails路由没有控制器名称的短URL

来自分类Dev

Rails路由没有控制器名称的短URL

来自分类Dev

路由的多个默认控制器

来自分类Dev

MVC控制器被称为DocumentationController时,使用默认路由为我提供了403禁止错误

来自分类Dev

在MVC 5中如何在没有默认操作的情况下为控制器设置路由?

来自分类Dev

MVC属性路由-带有GET和POST的默认控制器索引

来自分类Dev

MVC属性路由-带有GET和POST的默认控制器索引

来自分类Dev

Rspec视图:使用错误的控制器名称没有路由匹配

来自分类Dev

在不同控制器中具有不同参数名称的MVC路由

来自分类Dev

具有多个控制器的MVC

来自分类Dev

具有多个控制器的MVC

来自分类Dev

替换默认参数绑定而没有默认路由值

来自分类Dev

ASP.NET MVC路由,其值在控制器之前且没有尾部斜杠

来自分类Dev

ASP.NET MVC路由,其值在控制器之前且没有尾部斜杠

来自分类Dev

默认路由接口名称

来自分类Dev

MVC:1个控制器的多个路由

来自分类Dev

MVC 路由 - 多个 url 匹配单个控制器/方法

来自分类Dev

如何在asp.net C#中为某些控制器操作设置默认路由?

来自分类Dev

如何在asp.net C#中为某些控制器操作设置默认路由?

来自分类Dev

.net MVC默认路由

来自分类Dev

如何设置ASP.NET MVC路由,其中的控制器名称是从URL的多个段派生的?

来自分类Dev

RSpec控制器测试:没有路由匹配

来自分类Dev

在参数中没有可选ID的路由控制器

Related 相关文章

  1. 1

    .net mvc路由默认控制器/操作,但没有默认参数

  2. 2

    从默认路由C#MVC中排除控制器

  3. 3

    如何在控制器ASP.NET MVC 5上禁用默认路由

  4. 4

    我如何配置ASP.NET Core路由以路由到控制器(没有可选动作)(如果存在),然后回退到默认路由?

  5. 5

    Laravel 4控制器,处理默认路由?

  6. 6

    没有控制器或动作名称的ASP.NET MVC路由

  7. 7

    Rails路由没有控制器名称的短URL

  8. 8

    Rails路由没有控制器名称的短URL

  9. 9

    路由的多个默认控制器

  10. 10

    MVC控制器被称为DocumentationController时,使用默认路由为我提供了403禁止错误

  11. 11

    在MVC 5中如何在没有默认操作的情况下为控制器设置路由?

  12. 12

    MVC属性路由-带有GET和POST的默认控制器索引

  13. 13

    MVC属性路由-带有GET和POST的默认控制器索引

  14. 14

    Rspec视图:使用错误的控制器名称没有路由匹配

  15. 15

    在不同控制器中具有不同参数名称的MVC路由

  16. 16

    具有多个控制器的MVC

  17. 17

    具有多个控制器的MVC

  18. 18

    替换默认参数绑定而没有默认路由值

  19. 19

    ASP.NET MVC路由,其值在控制器之前且没有尾部斜杠

  20. 20

    ASP.NET MVC路由,其值在控制器之前且没有尾部斜杠

  21. 21

    默认路由接口名称

  22. 22

    MVC:1个控制器的多个路由

  23. 23

    MVC 路由 - 多个 url 匹配单个控制器/方法

  24. 24

    如何在asp.net C#中为某些控制器操作设置默认路由?

  25. 25

    如何在asp.net C#中为某些控制器操作设置默认路由?

  26. 26

    .net MVC默认路由

  27. 27

    如何设置ASP.NET MVC路由,其中的控制器名称是从URL的多个段派生的?

  28. 28

    RSpec控制器测试:没有路由匹配

  29. 29

    在参数中没有可选ID的路由控制器

热门标签

归档