有沒有辦法創建一個處理所有路由的基礎控制器實現?ASP.NET MVC基礎控制器
IE/home/index和/ about/index都指向一個控制器方法,並返回視圖。
我正在建設的網站是90%的靜態內容,我不想去創建50個控制器。
一個應該沒問題?
有沒有辦法創建一個處理所有路由的基礎控制器實現?ASP.NET MVC基礎控制器
IE/home/index和/ about/index都指向一個控制器方法,並返回視圖。
我正在建設的網站是90%的靜態內容,我不想去創建50個控制器。
一個應該沒問題?
請記住,「控制器」和「行動」是路由系統的關鍵詞,以實現它的動態魔術。如果您只需使用其他參數名稱替換路由中的「控制器」參數,則始終可以使用默認控制器。
routes.MapRoute("Default",
"{whatever}/{action}/{id}",
new { controller="Home", action="Index", whatever="", id="0" });
請注意,每個方法應該處理「無論」參數。
事情是 routes.MapRoute( 「默認」,//路線名稱 「{控制器}/{行動} /(編號)」,// URL與參數 新{控制器= 「基地」,動作=「 Index「,id =」「} //參數默認值 ); 這些都擊中了BaseController,但像「/ site-faq/banking-faq這樣的路線不會被擊中 – john 2010-01-20 07:14:49
難道你不能只是定義更多的路線來捕捉它們嗎?/ {whatever}/{action}。/ {whatever}/{動作}/stuff/{morestuff *}。請記住,你應該把你的路線從最具體到最不具體。 – womp 2010-01-20 07:19:48
routes.MapRoute( 「排行榜」, 「網站促銷/網站領導板」, 新{控制器=「Base」,action =「Index」} );。 但是當我點擊/ site-promotions/site-leader-board時,它從不碰到基礎控制器的索引方法 – john 2010-01-20 07:27:03
你的global.asax文件中有正確的路由,你可以這樣做。但是,重構或任何原因之後,您將很難管理網站。這裏是學習路由在asp .net mvc:http://www.asp.net/learn/mvc/#MVC_Routing
因爲你不打算映射到基於URL的控制器或方法,你只需要捕獲幾個參數,然後對它們做些什麼。
routes.MapRoute(
"MyNewRoute",
"{firstParameter}/{secondParameter}",
new {controller="Home", action="Index"}
);
public ActionResult Index(string firstParameter, string SecondParameter)
{
if (firstParameter == "Home")
{
// Do something
}
}
我認爲「 - 」正在打破路線 – john 2010-01-20 07:30:14
我明白你希望保持簡單的願望,但根據我的經驗,你總是期望某種程度的變化。如果我是你的情況,我會做這樣的事情:
public class HomeController : Controller
{
public ActionResult Index()
{
return RedirectToAction("Index", new { controller = "Main" });
}
}
public class AboutController : Controller
{
public ActionResult Index()
{
return RedirectToAction("Index", new { controller = "Main" });
}
}
public class MainController : Controller
{
public ActionResult Index()
{
// Do something important.
// Do something else important.
return View();
}
}
要創建AboutController,我只是複製了HomeController中,改變了類名AboutController。通過這種方式,您可以儘量減少路由維護工作,集中您想要集中的行爲,並且仍然允許自己適應不斷變化的需求,而無需撤銷很多解決方法。如果經過一段時間後,您必須更改特定操作的行爲,那麼您只需轉到該操作並更改代碼即可。
我們可以請一份10個示例路線清單,以獲得您的問題的準確示例。 2條路線是不夠的。 – 2011-05-03 01:31:29