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

asp.net-mvc – 路由是在我的区域中找到控制器,但不是视图

发布时间:2020-12-15 19:58:03 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用Maarten Balliauw的 Domain Route类将子域映射到MVC2应用程序中的区域,以便我有以下URL: http://admin.mydomain.com/home/index 代替: http://mydomain.com/admin/home/index 到目前为止,我只取得了部分成功.执行被路由到正确区域中的正确控
我正在尝试使用Maarten Balliauw的 Domain Route类将子域映射到MVC2应用程序中的区域,以便我有以下URL:
http://admin.mydomain.com/home/index

代替:

http://mydomain.com/admin/home/index

到目前为止,我只取得了部分成功.执行被路由到正确区域中的正确控制器,但它无法找到正确的视图.我收到以下错误:

The view 'Index' or its master was not found. The following locations were searched:
~/Views/AdminHome/Index.aspx
~/Views/AdminHome/Index.ascx
~/Views/Shared/Index.aspx
~/Views/Shared/Index.ascx

这向我表明MVC只在根视图文件夹中查找视图,而不是在区域内查看视图文件夹.如果我将区域视图文件夹中的视图复制到根视图文件夹,页面呈现正常.然而,这完全违背了将APP划分为区域的目的.

我正在为该地区定义路线:

public class AdminAreaRegistration : AreaRegistration
{
    public override string AreaName
    {
        get { return "Admin"; }
    }

    public override void RegisterArea(AreaRegistrationContext context)
    {
        context.Routes.Add(
            "Admin_Default",new DomainRoute(
                "admin.localhost","{controller}/{action}/{id}",new { controller = "AdminHome",action = "Index",id = UrlParameter.Optional }
        ));
    }
}

我很困惑为什么它找到区域内的控制器很好,但不是视图.

解决方法

好的,我明白了.下载MVC 2源代码并将其添加到我的解决方案中,如 here所述,我逐步完成了MVC代码.我发现区域内的路由实现了IRouteWithArea接口.此接口向RouteData添加“Area”属性,毫不奇怪,它包含区域的名称.我修改了DomainRoute类,以便实现这个接口并添加了一些带有这个附加参数的重载构造函数,它现在完全按照我的意愿工作.

注册我的路线的代码现在看起来像这样:

context.Routes.Add(
     "Admin_Default",new DomainRoute(
         "admin.mydomain","Admin",id = UrlParameter.Optional }
        ));

(编辑:李大同)

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

    推荐文章
      热点阅读