有没有办法创建一个处理所有路由的基本控制器实现?
IE / home / index和/ about / index都指向一个控制器方法并返回视图。
我正在构建的网站是90%的静态内容,我不想去创建50个控制器。
一个人应该没事?
答案 0 :(得分:1)
请记住,“控制器”和“操作”是路由系统执行动态魔术的关键词。如果只是用一些其他参数名替换路径中的“controller”参数,则可以始终使用默认控制器。
routes.MapRoute("Default",
"{whatever}/{action}/{id}",
new { controller="Home", action="Index", whatever="", id="0" } );
请注意,每个方法都应该处理“whatever”参数。
答案 1 :(得分:1)
我理解你想保持简单的愿望,但根据我的经验,你总是不得不期待一定程度的改变。如果我在你的情况下,我会做这样的事情:
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。这样,您可以将路由维护工作保持在最低限度,集中管理您想要集中的行为,并且您仍然可以自己适应不断变化的需求,而无需撤消大量的变通方法。如果在一段时间后,您必须更改特定操作的行为,则只需执行该操作并更改代码。
答案 2 :(得分:0)
你的global.asax文件中有正确的路由,你可以这样做。但是,经过一段时间的重构或任何原因,您很难管理网站。这是在asp .net mvc中学习路由:http://www.asp.net/learn/mvc/#MVC_Routing
答案 3 :(得分:0)
由于您不打算根据URL映射到控制器或方法,因此您只需要捕获几个参数,然后对它们执行某些操作。
routes.MapRoute(
"MyNewRoute",
"{firstParameter}/{secondParameter}",
new {controller="Home", action="Index"}
);
public ActionResult Index(string firstParameter, string SecondParameter)
{
if (firstParameter == "Home")
{
// Do something
}
}