加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc-routing – ASP.NET MVC区域:如何隐藏URL中的“区

发布时间:2020-12-15 22:50:58 所属栏目:asp.Net 来源:网络整理
导读:当运行具有博客区域和博客控制器的 MVC 2 Areas example时,URL如下所示: http://localhost:50526/Blog/Blog/ShowRecent格式: RootUrl / AreaName / ControllerName / ActionName 刚刚发现MVC区域,它似乎是组织代码的好方法,即为每个部分创建一个区域,在我
当运行具有博客区域和博客控制器的 MVC 2 Areas example时,URL如下所示:

http://localhost:50526/Blog/Blog/ShowRecent格式:

RootUrl / AreaName / ControllerName / ActionName

刚刚发现MVC区域,它似乎是组织代码的好方法,即为每个部分创建一个区域,在我的情况下,每个部分都有自己的控制器.这意味着每个AreaName = ControllerName.这样做的效果是Url例如/ Blog / Blog /上面的双AreaName / ControllerName路径

没有对路由的完全清楚的了解,我如何设置路由不显示AreaName?

编辑:

我试图减少路由的工作量,因为它们似乎会相互影响(即需要特定的排序),并可能导致严重的头痛:-)在将现有的Webform应用转换为MVC时,我已经转换了几个核心部分,它们每个都有一个控制器和大量的视图/动作,尽管大多数数据访问是代码在组件中,Model / ViewData类的数量正在增长…我正在根模型/视图中创建子文件夹这些部分(或区域)的文件夹,并希望创建区域将以相同的方式工作,除了组织代码(使用覆盖该区域的基本路线)
对此有任何评论吗?

解决方法

在每个区域的文件夹中,您将看到一个* AreaName * AreaRegistration.cs文件.这是存储区域路线规则的地方.默认情况下,当它们生成时,它们将包含所有其他的区域名称.问题是:如果从路由中删除区域名称“文件夹”,路由将捕获所有“标准”{controller} / { action} / {id}请求.这显然不是你想要的

要克服这一点,您可以根据该路由中存在的控制器名称,在路由上添加正则表达式过滤器.缺点?您将无法在应用程序中使用相同名称的两个控制器(至少不使用标准路由.您可以随时想到不同的路由来访问它们))

结束了这个结构:

/Areas
/Areas/Blog/Controllers/BlogController.cs
/Areas/Blog/Controllers/FeedController.cs
/Areas/User/Controllers/UserController.cs
/Controllers/PageController.cs

你应该是这样的:
在BlogAreaRegistration.cs中:

context.MapRoute(
    "Blog_default","{controller}/{action}/{id}",new { action = "Index",id = UrlParameter.Optional },new { controller = "(Blog|Feed)" }
);

在UserAreaRegistration.cs中:

context.MapRoute(
    "User_default",new { controller = "(User)" }
);

在Global.asax.cs中:

public static void RegisterRoutes(RouteCollection routes)
{
    context.MapRoute(
    "Default",new { controller = "Home",action = "Index",id = UrlParameter.Optional }
    );
}
protected void Application_Start()
{
    AreaRegistration.RegisterAllAreas();

    RegisterRoutes(RouteTable.Routes);
}

请注意,在global.asax地区注册首先!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读