为什么我自己的控制器会导致404错误?

时间:2013-10-11 10:08:22

标签: asp.net-mvc asp.net-mvc-4 http-status-code-404

我正在使用默认预设项目来构建我自己的应用程序 我添加了自己的控制器MyController和一个带有My的新视图目录index.cshtml

这是控制器代码:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace WebProject1.Controllers
{
    public class MyController: Controller
    {
        //
        // GET: /My/

        public ActionResult Index()
        {
            return View();
        }

    }
}

这是我的RouteConfig.cs

// ...
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "My", action = "Index", id = UrlParameter.Optional }
        );
    }
}
// ...

但是,当我开始调试并导航到/My/时,会显示404错误,并显示The resource or one of its dependencies cannot be found.行的消息。

如何让我的控制器工作?

3 个答案:

答案 0 :(得分:0)

除非您配置了任何区域,否则您应该能够访问您的操作 localhost/My/Indexlocalhost/My如果您的默认路由以操作作为索引。

该错误还将为您提供ASP.NET搜索以查找视图的区域列表。

答案 1 :(得分:0)

这几乎肯定是某个地方的错字。我建议从头开始重新创建控制器和视图。

答案 2 :(得分:0)

创建自定义路线并将其放在默认路线之前。

像这样:

    // ...
public class RouteConfig
{
    public static void RegisterRoutes(RouteCollection routes)
    {
     routes.MapRoute(
           name: "me",
           url: "me/{id}",
           defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
       );
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
            routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "My", action = "Index", id = UrlParameter.Optional }
        );
    }
}
// ...
希望这有效......