有没有办法创建一个处理所有路由的基础控制器实现?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