可以使用MVC路由来创建动态页面存储在动态页面而不是查看页面的动态页面

问题描述:

是否有mvc路由的任何很好的示例,其中每个404页面未找到请求被路由到MVC中的标准视图基本上从数据库中提取内容。可以使用MVC路由来创建动态页面存储在动态页面而不是查看页面的动态页面

这条线路只需添加到您的RouteTable的底部:

routes.MapRoute("DynamicPages", "{*page}", new { Controller = "DynamicPages", Action = "Show", Page = String.Empty }); 

而从分贝显示动态页面创建一个控制器:

public class DynamicPagesController : Controller 
{ 
    public ActionResult Show(string page) 
    { 
     var pageContent = DB.GetContentForPage(page); 

     return Content(pageContent); 
    } 
} 
+0

好东西!我认为实现动态页面的好方法 – Michael 2011-05-05 19:15:10

修改web.config文件,你可能会Reference to this page看看web.config部分的设置自定义错误页面。

以下是一种方法:在Application_Start的global.asax文件中,需要设置默认控制器工厂。用您自己的工厂实例覆盖它。

void Application_Start() 
{ 
    ControllerBuilder.Current.SetControllerFactory(new MyControllerFactory()); 
} 

MyControllerFactory应该DefaultControllerFactory继承和选择控制器使用的时候,看看你的数据库要显示相应的页面。如果该页面存在,请选择适当的控制器并覆盖requestContext.RouteData集合中的操作,以指向显示动态页面的适当操作。

如果请求的页面不存在,则将调用传回给基方法,并让它执行通常会执行的操作。

还有其他的方法可以做到这一点,但是这个应该可以工作,并且允许你在404页面前拦截请求。