MVC 5 Web属性路由不起作用

时间:2017-07-15 17:31:46

标签: asp.net-mvc asp.net-mvc-5 routing

我在我的应用程序中实现了属性路由,之后当我开始时没有按计划工作。只有Json Results的工作休息没有按预期工作。

 [RoutePrefix("ProductCategory")]
    public class CategoryController : Controller
    {
      [Route("CategoryMain")]
        // GET: /Category/
        public ActionResult Index()
        {
            var cat = categoryService.GetCategories();

            if (Request.IsAjaxRequest())
            {
                return PartialView("Index", cat);
            }
            return View("Index", cat);
        }
    }

错误

  

' /'中的服务器错误应用。无法找到该资源。   描述:HTTP 404.您正在寻找的资源(或其中一个   依赖项)可能已被删除,其名称已更改,或者是   暂时不可用。请查看以下网址并制作   确保它拼写正确。

请求的网址:/ ProductCategory / MainIndex 即使现在还没有工作,我也尝试过Just Index

但是如果该方法是JsonResult,它将以json格式返回数据。它不适用于任何其他ActionResults   我的路线配置

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


        }

我的webapiConfig

public static void Register(HttpConfiguration config)
        {
            config.MapHttpAttributeRoutes();

            config.Routes.MapHttpRoute(
                name: "DefaultApi",
                routeTemplate: "api/{controller}/{id}",
                defaults: new { id = RouteParameter.Optional }
            );
        }

我的全球

 AreaRegistration.RegisterAllAreas();
        FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
        RouteConfig.RegisterRoutes(RouteTable.Routes);
        BundleConfig.RegisterBundles(BundleTable.Bundles);

        // Autofac and Automapper configurations
        Bootstrapper.Run();

1 个答案:

答案 0 :(得分:2)

鉴于下面的路线前缀和路线

[RoutePrefix("ProductCategory")]
public class CategoryController : Controller {
    [HttpGet]
    [Route("CategoryMain")] // Matches GET ProductCategory/CategoryMain
    public ActionResult Index() {
        var cat = categoryService.GetCategories();
        if (Request.IsAjaxRequest()) {
            return PartialView("Index", cat);
        }
        return View("Index", cat);
    }
}

请求的网址必须是

ProductCategory/CategoryMain

代表CategoryController.Index动作