Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/329.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 子文件夹中的ASP.NET MVC自定义路由_C#_Asp.net Mvc_Asp.net Mvc Routing - Fatal编程技术网

C# 子文件夹中的ASP.NET MVC自定义路由

C# 子文件夹中的ASP.NET MVC自定义路由,c#,asp.net-mvc,asp.net-mvc-routing,C#,Asp.net Mvc,Asp.net Mvc Routing,我在谷歌上搜索过(可能是用了错误的关键字),并访问了ASP.NET/MVC网站的教程。但是没有正确理解MVC的路由。 我有一个下图的场景。我想在网站午餐时显示Index.cshtml。 我以各种方式更改了Global.asax.cs文件的registerOutes方法。最新代码(不工作)如下所示 如果有人用不同的例子解释MapRoute方法,并回答我的问题,我会非常高兴 我不认为问题出在你的路线上,我相信这是由于将你的视图和控制器文件夹移动到应用程序文件夹造成的 MVC使用“约定优先于配置”来处

我在谷歌上搜索过(可能是用了错误的关键字),并访问了ASP.NET/MVC网站的教程。但是没有正确理解MVC的路由。 我有一个下图的场景。我想在网站午餐时显示Index.cshtml。

我以各种方式更改了Global.asax.cs文件的registerOutes方法。最新代码(不工作)如下所示


如果有人用不同的例子解释MapRoute方法,并回答我的问题,我会非常高兴

我不认为问题出在你的路线上,我相信这是由于将你的视图和控制器文件夹移动到应用程序文件夹造成的

MVC使用“约定优先于配置”来处理文件夹的位置之类的问题,我猜它在新文件夹中找不到视图/控制器

发件人:

这些文件夹甚至包含在 ASP.NET MVC应用程序为空,因为 默认情况下,ASP.NET MVC框架 使用“约定优先于配置” 方法并做出一些默认设置 基于文件夹命名的假设 习俗。例如,控制器 按在“视图”文件夹中查找视图 你不必违约 在代码中显式地指定这一点。 坚持默认约定 减少所需的代码量 写,也可以使它更容易 其他开发人员了解您的 项目

我并不是说不可能有像你这样的文件夹结构,我只是不相信它是开箱即用的。 就个人而言,我建议回到默认设置,如果您需要保留此结构,那么我认为您可能需要实现自己的ControllerFactory和ViewEngine(我不确定这些是否是您需要更改的正确挂钩)

编辑: 您是否正在尝试将应用程序作为一个区域实施

编辑2: 如果您试图将应用程序添加为一个区域,那么您需要遵循一些步骤,我不确定您是否正在尝试这样做的原因是因为我认为区域必须存在于区域文件夹中。
这里有一些步骤,包括如何注册你的区域,如果这是你正在尝试做的

ASP.NET MVC 3具有子文件夹的内置功能。这就是所谓的区域(感谢@Morten让我知道这个词)。
但是在完成for Areas之后,我仍然无法运行web应用程序。错误显示配置错误@丹尼也注意到了

然后我搜索发现,子文件夹中的Web.config文件不应包含特定于应用程序的属性
因此,我从Web.config文件中删除了这些属性。然后我就可以跑了。但是,当我想导航到我的子文件夹/区域视图时,出现了一些运行时错误。错误是“无法加载类型'System.Web.Mvc.ViewPage该结构与使用区域完全匹配。编辑您的帖子,展示如何定义和注册应用程序区域,您将获得我的投票——除非有人在这方面击败您;)要使用这种文件夹,您必须将appropiate Controller命名空间添加到defaultcontrollerfactory,并创建一个自定义ViewEngine(继承自RazorViewEngine)以查看正确的文件夹。也许你正在尝试创建一个区域,如果你想使用像/App/Home/@Morten Mertner这样的路径,使用将更容易。我以为你必须在区域文件夹中定义区域?这就是为什么我不确定目的是什么。如果我对区域文件夹的看法不正确,请纠正我?@DannyLane我错了,你确实需要一个区域文件夹。@Morten:关键字“区域”对我来说是新的。我将完成您给定的msdn链接,然后返回给您。谢谢。我的第一次编辑询问您是否试图在@Morten的评论之前创建一个区域;)很高兴你一切顺利。@Danny:兄弟,那时候我不知道关键词。:)
routes.MapRoute(
            "App", // Route name
            "App/{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );