有没有一种方法可以创建一个基础控制器实现来处理所有路由?
例如,/home/index 和 /about/index 都指向一个控制器方法并返回视图。
我正在构建的网站有90%的静态内容,我不想去创建50个控制器。
只需要一个就可以了吗?
例如,/home/index 和 /about/index 都指向一个控制器方法并返回视图。
我正在构建的网站有90%的静态内容,我不想去创建50个控制器。
只需要一个就可以了吗?
请记住,“控制器”和“操作”是路由系统进行动态处理的关键字。如果您只是将路由中的“控制器”参数替换为其他参数名称,您始终可以使用默认控制器。
routes.MapRoute("Default",
"{whatever}/{action}/{id}",
new { controller="Home", action="Index", whatever="", id="0" } );
我理解你想要保持简单的愿望,但根据我的经验,你总是需要预期一定程度的变化。如果我处在你的情况下,我会这样做:
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();
}
}
由于您不会基于URL映射到控制器或方法,因此您只需要捕获一些参数,然后对它们进行操作。
routes.MapRoute(
"MyNewRoute",
"{firstParameter}/{secondParameter}",
new {controller="Home", action="Index"}
);
public ActionResult Index(string firstParameter, string SecondParameter)
{
if (firstParameter == "Home")
{
// Do something
}
}
通过在global.asax文件中使用适当的路由,您可以实现这一点。但是,随着时间的推移,对于重构或任何原因,您管理网站将变得困难。以下是学习ASP .NET MVC中路由的链接:http://www.asp.net/learn/mvc/#MVC_Routing