MVC中没有Area的控制器的子文件夹

时间:2015-02-09 18:15:41

标签: asp.net-mvc

我想在ASP.NET MVC应用程序的默认视图文件夹中创建子文件夹。我使用的是MVC 4.0

观看/设备/自动/ Index.aspx

查看/控制器/自动/ Edit.aspx

查看/控制器/半自动/ Index.aspx的

查看/控制器/半自动/ Edit.aspx

浏览/设备/手动/ Index.aspx的

浏览/设备/手动/ Edit.aspx

我有DeviceContoller,而我的网址应该是

http://.../Device/Auto/Index

http://.../Device/Auto/Edit

等半自动和手动设备。我不想为此使用Area。我不知道如何指定我的行动方法和路线。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:0)

在MVC中,URL所在的位置根本不是基于视图文件的组织。这是因为浏览器请求不会直接命中视图。你可能会认为它就像“.aspx”文件,浏览器只是直接跟踪路径和文件名。但MVC的情况并非如此。在MVC中,您配置一组路由来指定URL模式,并为每个模式配置它在控制器上映射到的功能。从此函数内部指定要使用的视图文件。您也可以在这里构建并传递支持模型。 MVC(模型 - 视图 - 控制器)得名于这些移动部件。

听起来你会很好地找到对MVC的一个很好的介绍,并从基础开始。这样,您就可以了解系统如何交互,并可以相应地规划如何构建应用程序。您想做的一切都可以完成,但您必须了解移动部件是什么以及它们如何相互作用。

答案 1 :(得分:0)

默认的View Engine不支持默认搜索位置中的子文件夹。您可以创建自己的视图引擎,以添加有关MVC如何根据控制器/操作或某些自定义属性确定如何返回正确视图的规则。如果你走这条路线,你可以搜索RazorViewEngine

但最简单的是告诉MVC在哪里找到View。假设您将“About.cshtml”移动到名为“Subdirectory”的子目录中。您可以这样渲染它:

public ActionResult About()
{
    return View("~/Views/Home/SubDirectory/About.cshtml");
}