Dot-Net
ASP.NET MVC - MapRoute 與 routes.Add(和 404s)
我剛剛開始使用 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(), 除非你需要做一些比它允許的更複雜的事情。路由按照定義的順序進行評估,因此您首先呼叫的那些。