ASP.NET MVC 3,剃刀视图和可移植区域

| 我正在尝试将可移植视图与ASP.NET MVC 3和剃刀视图一起使用,因为这似乎是创建简单插件体系结构的最佳方法。因此,我设置了类库,并在/Views/Admin/Index.cshtml中找到了视图,并将其设置为嵌入式资源。然后,我将该项目作为主要Web应用程序项目的依赖项包括在内。当我尝试访问管理控制器时,执行索引操作时会收到一条消息,指出找不到该视图文件(因此已正确包含了该控制器)。我假设它正在尝试查看主要的Web应用程序项目,而不是可移植区域的二进制文件。有没有一种方法可以使剃刀视图在可移动区域工作?     
已邀请:
我已经在这个特定问题上苦苦挣扎了一段时间,但我想我终于想通了。 文件夹结构以及如何在项目中调用名称空间对于正常工作非常重要! 我这里有一个带有嵌入式剃刀视图的可移动区域的工作示例:   https://github.com/fretje/MembershipStarterKit 看一下项目的结构。 该区域的名称为“ 0”,并且在项目的根目录中存在一个“ 1”类,该类位于“ 0”命名空间中。 然后有一个
Controllers
Models
Views
文件夹(就像普通的MVC项目一样),在
Views
文件夹下,又有一个
UserAdministration
文件夹,其中包含该区域的视图。 还有一些对于嵌入视图的工作非常重要的事情:您必须在
global.asax.cs
文件的
Application_Start
方法中注册一个新的视图引擎,您这样做了吗?
PortableAreaRegistration.RegisterEmbeddedViewEngine();
在您的注册类中,请确保您覆盖带有两个参数(
AreaRegistrationContext context
IApplicationBus bus
)的
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 }
    );
}
如果您不调用基本实现,则必须至少添加一个
RegisterAreaEmbeddedResources();
确保已注册您的嵌入式视图和资源。     
我按照Fretje的回答中的说明进行了工作,然后还在您的网站中添加了对EmbeddedResourceVirtualPathProvider的nuget包引用。     
您是否确定在可移动区域中将视图标记为嵌入式资源? 我还发现可移植区域的一个不错的功能是您可以覆盖嵌入式视图,因此,如果在主机应用程序中放置一个具有相同名称和位置的视图(具有不同代码逻辑的嵌入式视图),它将优先于嵌入式一个尼斯。 !!! 希望这可以帮助     

要回复问题请先登录注册