如何查看 mvc 应用程序中的所有视图
Posted
技术标签:
【中文标题】如何查看 mvc 应用程序中的所有视图【英文标题】:How to see all the views in mvc application 【发布时间】:2014-04-08 10:38:04 【问题描述】:我添加了一个默认的 MvcApplication (MVC 4)(它的名称是 MvcApplication3
与我的解决方案的名称匹配)宽度主页视图(关于、索引、联系人),这将是我的启动(在 VS 解决方案资源管理器的界面中为粗体)项目。然后我在解决方案中添加了另一个名为MvcApplication2
的项目(MvcApplication,但这次是一个空的)。然后我添加了后一个项目作为对第一个项目的引用。我还在引用的项目中添加了一个名为TestController
(绿线)的控制器,并为其Index
(红色箭头)方法生成了一个视图。但是,当我转到链接 /Test
或 /Test/Index
时,没有显示我期望的视图(红色箭头)。然后我将Test
和Index.cshtml
(蓝色箭头)添加到主项目中,现在我看到的是它的内容,而不是我的控制器所在的项目。
是否可以让应用程序在其他项目中寻找视图而不是启动视图?
我正在添加结构的图像以便更容易理解。
P.S.:可能相关:TestController
的Index
方法中的断点 IS 被命中。
tldr;使用蓝色视图而不是红色视图
【问题讨论】:
【参考方案1】:我认为您的问题是您已将 MvcApplication3 设置为启动项目并导致您打开该项目的视图。
是否可以让应用程序在其他应用程序中查找视图 项目而不是启动项目?
是的,它是可能的,您可以将您的应用程序重定向到 url。认为你的应用程序有一个 url http://localhost:(someport)
你可以设置重定向到第二个应用程序的端口。
为了更好地理解 MVC 的路由系统,我放了一个链接:Documentation of routing system
【讨论】:
感谢您的回复。我无意要两个应用程序,我想要两个projects
。是的,它是开放的,因为这就是routeConfig
的定义方式。但是,我很确定这可以解决。最后,您的链接中是否有任何具体内容需要我看一下,因为我只能看到它谈论的是单个项目应用程序中相当简单的示例?
抱歉,这是一个通用文档。【参考方案2】:
据我所知,您不能像这样将项目链接在一起。每个项目都成为自己的网站,拥有自己的地址。您可能将多个项目放在一个解决方案中的原因是共享类、服务等。我认为您需要的是领域:
http://www.codeproject.com/Articles/714356/Areas-in-ASP-NET-MVC
【讨论】:
【参考方案3】:根据我和我的一个朋友的一些想法,以及一个关于覆盖 RazorViewEngine
的 link,我终于得到了我想要的东西,完全按照我的预期工作:
-
我在主项目中创建了一个名为
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\"
它开始按预期顺序查找视图
我在基础项目中添加了一个 ViewStart 文件,以使其也呈现布局。【讨论】:
以上是关于如何查看 mvc 应用程序中的所有视图的主要内容,如果未能解决你的问题,请参考以下文章