我添加了一个默认的MvcApplication(MVC 4)(其名称为MvcApplication3
,与我的解决方案名称相匹配)宽度主页视图(关于,索引,联系人),这将是我的启动(粗体)在VS解决方案资源管理器的界面)项目中。然后我添加了一个名为MvcApplication2
的项目(MvcApplication,但这次是空的)到解决方案。然后我添加了后一个项目作为第一个项目的参考。我还为引用的项目添加了一个名为TestController
(绿线)的控制器,并为其Index
(红色箭头)方法生成了一个视图。但是,当我转到/Test
或/Test/Index
链接时,我不会显示我期待的视图(红色箭头)。然后我将相同的文件夹Test
与Index.cshtml
(蓝色箭头)添加到主项目中,现在我看到的内容而不是项目的位置我的控制器坐在。
是否可以让应用程序在其他项目中查找视图而不是启动项?
我正在添加结构图像,以便更容易理解。
P.S。:可能相关:断点 IS 在Index
的{{1}}方法中被点击。
答案 0 :(得分:0)
我认为您的问题是您已将MvcApplication3设置为启动项目并导致您打开该项目的视图。
是否可以让应用程序在另一个中查找视图 项目而不是创业公司?
是的,它可以将您的应用程序重定向到网址。认为您的应用程序有一个URL http://localhost:(someport)
,您可以设置重定向到第二个应用程序的端口。
我提供了一个链接,以便更好地理解MVC的路由系统:Documentation of routing system
答案 1 :(得分:0)
据我所知,你不能像这样链接到项目。每个项目都有自己的网站和自己的地址。您可以将多个项目放在一个解决方案中的原因是分享类,服务等内容。我认为您需要的是以下几个方面:
http://www.codeproject.com/Articles/714356/Areas-in-ASP-NET-MVC
答案 2 :(得分:0)
我和我的一个朋友以及link提出了一些关于覆盖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"
};
...
(我觉得我觉得我无法正确格式化代码令人不安。有人可以帮我一把吗?)
并在我添加的主要项目的Global.asax
中:
ViewEngines.Engines.Clear();
var ourViewEngine = new
ViewEngines.Engines.Add(ourViewEngine);
AreaRegistration.RegisterAllAreas();
...
我添加了一个构建后事件命令:
xcopy /s "$(ProjectDir)Views\*.*" /Y "$(SolutionDir)$(SolutionName)\ViewsBase\"
它开始按预期顺序查找视图