And*_*ius 5 asp.net-mvc projects-and-solutions views project asp.net-mvc-4
我添加了一个默认的MvcApplication(MVC 4)(它MvcApplication3的名称与我的解决方案的名称相匹配)宽度主页视图(关于,索引,联系人),这将是我的启动(VS解决方案资源管理器界面中的粗体)项目.然后我添加了另一个项目(MvcApplication,但这次是空的)调用MvcApplication2了解决方案.然后我添加了后一个项目作为第一个项目的参考.我还为引用的项目添加了一个名为TestController(绿线)的控制器,并为其Index(红色箭头)方法生成了一个视图.但是,当我转到链接/Test或时/Test/Index,我没有显示我期待的视图(红色箭头).然后,我添加同一文件夹Test与Index.cshtml(蓝色箭头),主要项目上,现在我看到它的内容,而不是该项目的在我的控制器位于英寸
是否有可能使应用程序在其他项目中查找视图而不是启动项?
我正在添加结构图像,以便更容易遵循.
PS:可能相关:断点是在Index方法中被击中的TestController.

通过我和我的一个朋友的一些想法以及关于覆盖的链接RazorViewEngine,我终于得到了我想要的东西,完全按照我的预期工作:
ViewsBase在主项目中命名的文件夹。我这样重写RazorViewEngine:我只更改了我需要的地方,留下了我在构造函数中找到的所有其他内容RazorViewEngine:
public class MyCustomViewEngine : RazorViewEngine
{
public MyCustomViewEngine()
{
...
ViewLocationFormats = new[]
{
"~/Views/{1}/{0}.cshtml",
"~/Views/{1}/{0}.vbhtml",
"~/Views/Shared/{0}.cshtml",
"~/Views/Shared/{0}.vbhtml",
"~/ViewsBase/{1}/{0}.cshtml",
"~/ViewsBase/{1}/{0}.vbhtml"
};
...
Run Code Online (Sandbox Code Playgroud)(我发现我无法正确格式化代码,这很令人不安。有人可以帮我吗?)
在Global.asax主项目中我添加了:
ViewEngines.Engines.Clear();
var ourViewEngine = new
ViewEngines.Engines.Add(ourViewEngine);
AreaRegistration.RegisterAllAreas();
...
Run Code Online (Sandbox Code Playgroud)
我添加了一个构建后事件命令:
xcopy /s "$(ProjectDir)Views\*.*" /Y "$(SolutionDir)$(SolutionName)\ViewsBase\"
它开始按预期顺序查找视图
| 归档时间: |
|
| 查看次数: |
107 次 |
| 最近记录: |