2014-09-29 168 views
0

我有一個傳統的WebForms網站,我試圖添加新的MVC 5頁面。MVC5路由到404

我運行VS快遞2013/IISExpress

從這些頁面

我按照說明:

http://www.codeproject.com/Articles/38778/ASP-NET-WebForms-and-ASP-NET-MVC-in-Harmony https://www.simple-talk.com/dotnet/asp.net/mixing-web-forms-and-asp.net-mvc/ http://www.asp.net/mvc/tutorials/mvc-5/introduction/adding-a-view

我跑我的項目 「管理的NuGet包」 和安裝ASP.NET MVC和所有依賴。

我添加了對System.Web.Routing,System.Web.Mvc和System.Web.Razor的引用,創建了一個基本的視圖和控制器。

一切都建立並運行。

我可以設置斷點並看到如下正在創造我的路由時,應用程序啓動:

private void RegisterRoutes(RouteCollection routes) 
    { 
     routes.MapHttpRoute(
      "AdminPages", 
      "Admin/{controller}", 
      new { controller = "Dashboard" } 
      ); 
    } 

我嘗試添加屬性路由如下所述:

http://www.dotnet-tricks.com/Tutorial/mvc/4PK4010514-Understanding-Attribute-Routing-in-ASP.NET-MVC.html

控制器:

namespace ConnectBusiness.Controllers 
{ 
    [RoutePrefix("Admin")] 
    [Route("{action=index}")] 
    public class DashboardController : Controller 
    { 

     // Dashboard/Index 
     public ActionResult Index() 
     { 
      return View(); 
      //return View("~/MVC5/Views/Administration/Dashboard.cshtml"); 
     } 
    } 
} 

Web.config具有以下處理程序entires:

<remove name="ExtensionlessUrlHandler-Integrated-4.0" /><remove name="OPTIONSVerbHandler" /><remove name="TRACEVerbHandler" /> 
    <add name="ExtensionlessUrlHandler-Integrated-4.0" path="*." verb="*" type="System.Web.Handlers.TransferRequestHandler" preCondition="integratedMode,runtimeVersionv4.0" /> 

但是,當我嘗試導航到什麼,我認爲是正確的URL,我總是重定向到Default.aspx的導致404:

http: //localhost:57330/Admin/Dashboard --> http: //localhost:57330/Admin/Dashboard/default.aspx --> 404

任何想法是什麼導致404重定向以及我如何成功導航到我的控制器?

回答

0
  1. 您是否在Views/Dashboard/index.cshtml中有索引視圖?如果您點擊索引操作,那就是它將要查找的文件。

  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 }); 
    } 
    

如果你想要的網址做的是本地主機:57330 /管理/控制面板試試這個:

[RoutePrefix("Admin")] 
[Route("{action=index}")] //default action 
public class DashboardController : Controller 
{ 

    // route: /Admin/Dashboard 
    [Route("Dashboard")] 
    public ActionResult Index() 
    { 
     return View(); 
    } 
} 

你有它設置的方式,我認爲該URL會localhost:57330/Admin or localhost:57330/Admin/Index