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

前端之家收集整理的这篇文章主要介绍了asp.net-mvc-3 – ASP.NET MVC 3,Razor Views和便携式区域前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试使用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();

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

猜你在找的asp.Net相关文章