2014-09-29 112 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