2009-07-07 56 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頁面前攔截請求。