2016-08-09 88 views
0

我嘗試使用基於屬性的路由。但是當我嘗試下面的代碼片段來激活基於屬性的路由我得到以下錯誤信息:'RouteCollection'不包含'MapMvcAttributeRoutes'的定義

RouteCollection「不包含定義 」 MapMvcAttributeRoutes

這是我的代碼:

public class RouteConfig 
{ 
    public static void RegisterRoutes(RouteCollection routes) 
    { 
     routes.IgnoreRoute("{resource}.axd/{*pathInfo}"); 
     routes.MapMvcAttributeRoutes(); //Attribute Routing 
    } 

} 

以下是引用:

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

我的項目的框架版本是4.5.2

這裏有什麼問題,以及我如何解決這個問題?

+0

什麼版本的MVC的是你使用?看到這裏http://stackoverflow.com/questions/37991768/routecollection-doesnt-contain-a-definition-for-mapmvcattributeroutes – Ric

+0

它的4.0.0.1/Runtimeversion v4.0.30319。當我創建一個新項目時,我選擇>在Visual Studio中創建一個空的ASP.NET 4.5.2項目。 - 風暴1分鐘前編輯 – STORM

+1

'routes.MapMvcAttributeRoutes()'只能從MVC5 + – Ric

回答

0

我現在工作了。我做了以下內容:

我首先添加了一個名爲App_Start的新文件夾。在這個文件夾中,我創建了一個名爲RouteConfig.cs的新類文件。

下面的代碼添加到上面的文件:

protected void Application_Start(object sender, EventArgs e) 
    { 
     //AreaRegistration.RegisterAllAreas(); 
     RouteConfig.RegisterRoutes(RouteTable.Routes); 
    } 

額外下然後:

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

的我在Application_Start方法添加一個Global.asax文件我用下面的代碼項目> NuGet包管理器> Pacakge管理器控制檯我將Microsoft ASP.NET MVC 5.2.3包添加到我的項目中。

最後我添加以下代碼的新MVC5空控制器:

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

namespace WebApplication4.Controllers 
{ 
    [RoutePrefix("products")] 
    public class DefaultController : Controller 
    { 
     // GET: Default 
     [Route] 
     public ActionResult Index() 
     { 
      return Content("It Works!"); 

      //return View(); 
     } 
    } 
} 

這個我能夠通過鍵入項目打開我的項目後:

http://localhost:65311/products 
相關問題