public class MyViewEngine: RazorViewEngine
{
public MyViewEngine()
{
MasterLocationFormats = new string[]
{
"~/bin/Views/{1}/{0}.cshtml", // Все dll помещаются в директорию bin. Вместе с ними будут загружены и файлы представлений.
"~/bin/Views/Shared/{0}.cshtml"
};
ViewLocationFormats = new string[]
{
"~/bin/Areas/{2}/Views/{1}/{0}.cshtml", // если используются Area
"~/bin/Areas/{2}/Views/Shared/{0}.cshtml"
};
}
}
要从另一个项目添加控制器,请将 dll 连接到主项目,然后在 RouteConfig 的路由设置中,从包含的 dll 中指定要添加的命名空间:
默认情况下,Views 中的所有视图都不会进入 dll,而是作为独立文件存在。主项目引擎沿着“~/Views”路径在项目的根文件夹中查找视图。要让它看到来自 dll 项目的视图,您需要实现您的 ViewEngine:
您需要连接引擎:
另一种解决方案是将视图编译成单独的 dll。然后它可以连接到项目并设置 RazorGenerator 来使用这个 dll。但是,在这种情况下,如果不完全重新编译项目,您将看不到对视图所做的更改。
但是,我建议您在主应用程序中保留视图。