ASP.Net MVC - 资源无法找到错误

LCJ*_*LCJ 60 asp.net asp.net-mvc razor asp.net-mvc-3

我是ASP.Net MVC的新手.我刚刚在Visual Studio 2010中创建了一个MVC3项目.视图引擎是剃须刀.当我刚运行应用程序时,它在浏览器中给出了正确的结果.URL为http:// localhost:4163 /.然后我将"设置为起始页"应用于〜\ Views\Home文件夹中的Index.cshtml.然后当我运行应用程序时,url变为 http:// localhost:4148/Views/Home/Index.cshtml ,它说无法找到资源.我该怎么做才能纠正它?网址映射在哪里完成?

Global.asax文件:

using System.Web.Mvc;
using System.Web.Routing;

namespace TEST
{

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterGlobalFilters(GlobalFilterCollection filters)
    {
        filters.Add(new HandleErrorAttribute());
    }

    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterGlobalFilters(GlobalFilters.Filters);
        RegisterRoutes(RouteTable.Routes);
    }
    }
 }
Run Code Online (Sandbox Code Playgroud)

gre*_*g84 93

URL映射或"路由"由ASP.NET MVC站点的根目录中的Global.asax处理.

单击"设置为起始页"时,它会更改项目设置以查找相对于应用程序根目录的文件.但是在MVC中,实际上是指向索引页面的默认路径http://localhost:4163/Home/Index- 阅读类似这样的内容,以了解路由的工作原理.

要"修复"项目,因为它正在尝试(并且失败)直接导航到视图,右键单击项目并选择" Properties",单击" Web"选项卡并选择" Specific Page",将文本框留空.现在,当您开始调试时,它应该再次转到主页 - 查看默认路由参数以查看Global.asax中RegisterRoutes方法中的原因


小智 24

确保在控制器文件夹中创建了HomeController.cs类.

  • 这是我的问题,我有一个"默认"控制器,所以我将controller ="Home"更改为controller ="Default",之后它运行了. (3认同)

saj*_*jad 10

在我遇到的类似问题中,我的Action有一个HTTP"POST"属性,但我试图打开页面(默认情况下它是"GET").

所以我不得不创建一个HTTP"GET"版本.


小智 6

我也得到了相同的html-404错误:

无法找到资源.说明:HTTP 404.您要查找的资源(或其中一个依赖项)可能已被删除,名称已更改或暂时不可用.请查看以下网址,确保拼写正确.

但仔细检查后,我发现我已将控制器的名称保留为Default1Controller而不是将其更改为HomeController.当我进行更改并调试应用程序时,它工作.希望如果您遇到同样的问题,它会对您有所帮助.


小智 5

按照以下步骤运行asp.net mvc应用程序.

  • 控制器创建
    右键单击controllers文件夹并添加控制器.注意 - 不要删除Controller后缀.它的ASP.NET MVC约定.
    将控制器的名称命名为"DemoController",您可以在"DemoController"中看到"Index"操作.当您创建控制器时,"索引"是默认操作.

  • 查看创建
    右键单击"索引"操作名称并保留默认视图名称即"索引",然后单击"添加"按钮.


  • 路径设置打开Global.asax文件,然后您将看到路由的默认设置映射到"Home"控制器,"Index"操作将其更改为"Demo"控制器和"Index"操作.URL映射是用Global.asax文件编写的.当您打开Global.asax文件时,您将看到以下设置:

    routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
    
    Run Code Online (Sandbox Code Playgroud)

    将其更改为:

    routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Demo", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );
    
    Run Code Online (Sandbox Code Playgroud)

运行您的应用程序,您可以看到您的应用程序正在运行


And*_*own 5

令人难以置信的是,我不小心从控制器中删除了public关键字!

在此输入图像描述

我想这对任何人都没有帮助,但你永远不会知道......