2009-07-07 57 views

回答

2

这条线路只需添加到您的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

1

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

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

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

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

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