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

asp.net-mvc-3 – ASP.NET MVC 3,Razor Views和便携式区域

发布时间:2020-12-16 00:26:30 所属栏目:asp.Net 来源:网络整理
导读:我正在尝试使用ASP.NET MVC 3和剃刀视图的便携式视图,因为这似乎是创建一个简单的插件架构的最佳方式。所以我有我的类库设置,我的视图位于/Views/Admin/Index.cshtml,它被设置为嵌入式资源。然后,我将该项目作为主要Web应用程序项目的依赖项。当我尝试访
我正在尝试使用ASP.NET MVC 3和剃刀视图的便携式视图,因为这似乎是创建一个简单的插件架构的最佳方式。所以我有我的类库设置,我的视图位于/Views/Admin/Index.cshtml,它被设置为嵌入式资源。然后,我将该项目作为主要Web应用程序项目的依赖项。当我尝试访问管理控制器时,索引操作我收到一个无法找到该视图文件的消息(因此控件正确包含在内)。我假设它正在尝试查看主要的Web应用程序项目,而不是便携式区域的二进制文件。有没有办法让剃刀的意见与便携式区域一起工作?

解决方法

我在这个问题上一直在努力一段时间,但我想我终于明白了。

文件夹结构以及命名空间在项目中的名称空间是非常重要的,以便正常工作!

我在这里有一个带有嵌入式剃须刀的便携式区域的工作示例:

07000

看看项目的结构。

该区域的名称是UserAdministration,在项目根目录中有一个UserAdministrationRegistration类,该类位于UserAdministration命名空间中。
然后有一个Controllers,Models和Views文件夹(就像一个普通的MVC项目),在Views文件夹下,还有一个UserAdministration文件夹,其中包含该区域的视图。

还有一些其他对于嵌入式视图工作非常重要的事情:您必须在global.asax.cs文件的Application_Start方法中注册新的视图引擎,是否这样做?

PortableAreaRegistration.RegisterEmbeddedViewEngine();

而在你的注册类中,请确保您覆盖了需要2个参数(AreaRegistrationContext context和IApplicationBus总线)的RegisterArea方法,并调用其中的基本实现:

public override void RegisterArea(AreaRegistrationContext context,IApplicationBus bus)
{
    base.RegisterArea(context,bus); // <== very important!

    context.MapRoute(
        "UserAdministration",AreaName + "/{controller}/{action}/{id}",new { controller = "UserAdministration",action = "Index",id = UrlParameter.Optional }
    );
}

如果你不调用base实现,你必须至少添加一个

RegisterAreaEmbeddedResources();

以确保您嵌入的视图和资源已注册。

(编辑:李大同)

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

    推荐文章
      热点阅读