Dot-Net

ASP.NET MVC - MapRoute 與 routes.Add(和 404s)

  • February 4, 2009

我剛剛開始使用 ASP.NET MVC。

MapRoute 和 routes.Add 有什麼區別?我應該只使用 MapRoute 嗎?我可以映射多條路線嗎?哪些“地圖”優先……您首先或最後呼叫的那些?

我希望能夠為使用者做一些類似於 StackOverflow 的事情。但我希望 URL 適合這種模式:

“User/{domain}/{username}”被路由到 UserController

並為所有其他請求執行典型的 ASP.NET MVC 路由。前任:

       routes.MapRoute(
           "Default", "{controller}/{action}/{id}",
           new { controller = "Home", action = "Index", id = "" }  
       );

更新:

使用 URL 時:<http://localhost:3962/User/MYDOMAIN/BTYNDALL>

我收到錯誤:HTTP 404。您要查找的資源(或其依賴項之一)可能已被刪除,但名稱已更改,或暫時不可用。

這是我正在使用的程式碼:

public class MvcApplication : System.Web.HttpApplication
{
   public static void RegisterRoutes(RouteCollection routes)
   {
       routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

       routes.MapRoute(
           "User",                                                     
           "User/{domain}/{username}",                           
           new { controller = "User", action = "Index" }      
       );

       routes.MapRoute(
           "Default",                                              
           "{controller}/{action}/{id}",                           
           new { controller = "Home", action = "Index", id = "" }  
       );

   }

   protected void Application_Start()
   {
       RegisterRoutes(RouteTable.Routes);
   }
}

您的使用者控制器應該有

public class UserController : Controller {
   public ActionResult Index(string domain, string username) { return View(); }
}

使用者控制器的 Index 方法上的兩個變數是從路由中獲取的。

MapRoute()是一個擴展方法Routes.Add()。使用MapRoute(), 除非你需要做一些比它允許的更複雜的事情。

路由按照定義的順序進行評估,因此您首先呼叫的那些。

引用自:https://stackoverflow.com/questions/513663