无法使MVC 5属性路由适用于Controller

时间:2015-03-30 11:01:13

标签: c# asp.net-mvc-5

我无法让MVC 5属性路由适用于Controller。我得到了404,我真的不确定我错过了什么。我在网上查了一大堆例子,据我所知,我已经100%跟踪了他们

我想要一个名为' CustomerServicePolicyController'对抗路线http://[site]/customer-service-policy/

我正在使用MVC 5.这就是我所做的:

  1. 打开RouteConfig.cs
  2. 将其修改为以下内容:

    public static void RegisterRoutes(RouteCollection routes)
        {
            routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
    
            //enabling attribute routing
            routes.MapMvcAttributeRoutes();
    
            //convention-based routing
            routes.MapRoute(
            name: "Default",
            url: "{controller}/{action}/{id}",
            defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional },
               namespaces: new[] { "TTTA.Controllers" }
                   );
        }
    
    1. 创建了一个名为CustomerServicePolicyController.cs的控制器
    2. 确保如下:

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;
      using System.Web.Mvc;
      
      namespace TTTA.Controllers
      {
          [RoutePrefix("customer-service-policy")]
          [Route("{action=index}")] //default action 
          public class CustomerServicePolicyController : Controller
          {
              public ActionResult Index()
              {
                  return View();
              }
          }
      }
      
      1. 确保我的View文件夹在那里并正确命名为" CustomerServicePolicy"。请注意,当这不起作用时,我也尝试将此文件夹重命名为" customer-service-policy"但同样的404!

      2. 确保我在View文件夹中有一个index.cshtml文件。

      3. 我认为应该这样做,但我每次访问http://[site]/customer-service-policy/时都会获得404。

        我可以确认http://[site]/CustomerServicePolicy/也不再起作用,但如果删除Controller声明上方的属性,它会再次起作用。

        我错过了什么?我打赌明显的事情......

        我使用Visual Studio Express 2013 for web和现有的Web服务器 - IIS Express。

        非常感谢提前。

0 个答案:

没有答案