我想知道如何将我的View放在不同的类库中。 My View位于名为Presentation的类库中,控制器位于标准的ASP.NET MVC 5 Web应用程序项目中。
我尝试使用下面列出的Custom ViewEngineProvider:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace Controllers
{
public class CustomViewEngine : RazorViewEngine
{
public CustomViewEngine() : base()
{
ViewLocationFormats = new[]
{
"~/Views/{1}/%1/{0}.cshtml",
"~/Views/{1}/%1/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/Shared/{0}.vbhtml"
};
PartialViewLocationFormats = new[]
{
"~/Views/%1/{1}/{0}.cshtml",
"~/Views/%1/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/Shared/{0}.vbhtml"
};
}
protected override IView CreatePartialView(ControllerContext controllerContext, string partialPath)
{
return base.CreatePartialView(controllerContext, partialPath);
}
protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath)
{
return base.CreateView(controllerContext, viewPath, masterPath);
}
protected override bool FileExists(ControllerContext controllerContext, string virtualPath)
{
return base.FileExists(controllerContext, virtualPath);
}
}
}7
但这不起作用。 我读到了关于VirtualPathProvider的内容,但是我无法弄清楚它是如何工作的以及如何在这种情况下使用它,如果它可以解决我的问题。
日Thnx
答案 0 :(得分:2)
问题是视图不会编译到类库中,因为它们是静态文件,因此您无法添加对包含视图的项目的引用。
当您将模型,视图和控制器移动到单独的项目时 - 通常模型和控制器分离,视图保留在ASP.NET MVC项目中。
但是如果您想保持现状,那么您可以将构建事件添加到项目中,并将视图从一个项目复制到另一个项目。
或者你可以使用RazorGenerator来编译视图。