博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Asp.net MVC23 使用Areas功能的常见错误
阅读量:5993 次
发布时间:2019-06-20

本文共 1878 字,大约阅读时间需要 6 分钟。

一般WEB项目都会不同的页面区域,如:用户前台、用户后台、管理员后台。

访问的URL:

用户前台:www.domain.com/home/index

用户后台:www.domain.com/admin/home/index

管理员后台:www.domain.com/manager/home/index

asp.net mvc 2/3 提供了Areas功能来实现

1.打开新建项找到Areas,分别添加admin,manager,添加好后项目结构类似下面

Areas下有各自独立的Controllers,Models,Views。此外还多了个文件AreaRegistration为后缀的.cs文件. 这个文件主要的作用是给Areas下的子模块配置路由。在全局文件Global.asax中的Application_Start事件里有这么一句代码 AreaRegistration.RegisterAllAreas()

按上面的需要实现的URL建立好相应的Controllers,Views(home/index)访问URL遇到第一个问题.

第一个问题:

找到了多个与名为“Home”的控制器匹配的类型。如果为此请求(“{controller}/{action}/{id}”)提供服务的路由没有指定命名空间来搜索匹配此请求的控制器,则会发生此情况。如果是这样,请通过调用采用“namespaces”参数的“MapRoute”方法的重载来注册此路由

解决方法:

修改AdminAreaRegistration.cs 和 MarengerAreaRegistration.cs 中的路由设置,将其控制器的命名空间传入给系统,以修改 AdminAreaRegistration.cs 为,另外如果将默认的用户前台WebSite也放入Areas可以//RegisterRoutes(RouteTable.Routes);

例子:

public override void RegisterArea(AreaRegistrationContext context){   //直接将命名空间传入  context.MapRoute(    "Admin_default",    "Admin/{controller}/{action}/{id}",    new { controller = "Home", action = "Index", id = UrlParameter.Optional },       new string[] { "Demo.Areas.Admin.Controllers" } //controllers的命名空间  );}
public override void RegisterArea(AreaRegistrationContext context){   //直接将命名空间传入  context.MapRoute(    "WebSite_default",    "{controller}/{action}/{id}",    new { controller = "Home", action = "Index", id = UrlParameter.Optional },       new string[] { "Demo.Areas.WebSite.Controllers" } //controllers的命名空间  );}

第二个问题: 

@Html.ActionLink对于区域Areas的设置,为了避免在admin/home/index下访问about/index出现admin/about/index about上要new{area=""}

@Html.ActionLink("Link Text", "Action", "Controller", new { Area="AreaName" }, null)

  

转载地址:http://zgvlx.baihongyu.com/

你可能感兴趣的文章
几种简单的负载均衡算法及其Java代码实现
查看>>
JavaScript 创建对象与继承总结和回顾
查看>>
Java并发编程的挑战
查看>>
1047 行 MySQL 详细学习笔记(值得学习与收藏)
查看>>
js面向对象精要-理解对象
查看>>
微信小程序绘图小结——Base64图片绘制
查看>>
一个小程序开发者的技术之路 | 2018掘金年度征文
查看>>
Android SharedPreferences 实现原理解析
查看>>
java基础LinkedHashMap原理
查看>>
本人整理的前端规范
查看>>
oracle数据库服务器(内存减小导致Oracle启动不了,解决方法)
查看>>
Unknown system variable 'language'
查看>>
linux远程桌面vnc服务配置详细教程
查看>>
怎么能让while循环变成死循环,无限的输出
查看>>
查看LINUX操作系统相关信息命令
查看>>
Python学习:paramiko模块(1)SSH登陆
查看>>
Windows Thin PC中文化
查看>>
javascript 实现垂直展开压缩动画
查看>>
SQL Server中的Merge关键字
查看>>
对于公司组建Hadoop基础框架的推荐分析
查看>>