组织具有大量静态信息视图的MVC应用程序的家庭控制器

时间:2013-06-02 21:34:43

标签: asp.net-mvc

我的MVC应用程序会有很多视图(大约20到30个)。目前它们都在我的HomeController中,但它已经很长了:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
        return View();
    }

    /* *SNIP* 29 actions later... */
}

在MVC 4中处理静态内容页面的最佳方法是什么?最好将它们放在HomeController中,还是有一个与每个信息区域相关的独立控制器?

我真的想避免使用CMS,因为MVC非常适合我的所有其他要求。

1 个答案:

答案 0 :(得分:1)

如果您没有使用模型或视图包将任何数据传入视图,那么为什么不只是有一个索引操作并使用路径中的路径参数来确定要使用哪个视图?

这样的事情

<强>控制器

public class HomeController : Controller
{
    public ActionResult Index(string path)
    {
        return View(path);
    }    
}

<强>路线

routes.MapRoute(
    name: "Default", // Route name
    url: "{controller}/{action}/{*path}" // URL with parameters
);

或者,如果你不想让url反复包含home / index,那么就这样做吧

routes.MapRoute(
    name:"Catchall",
    url: "{path}",
    defaults: new { controller = "Home", action = "Index", path = "DefaultView" }
);