2013-11-15 52 views
0

我正在考慮爲自己的網站創建一個CMS,我認爲這將是eaiser創建頁面和更新元標籤和動態內容。當我想過這個問題更多,我意識到我可以更新發言權的內容...創建一個動態的ActionResult

public ActionResult Index() 
{ 
    ViewBag = "My Content"; 
    return View(); 
} 

但我從來沒有想過創建新的頁面,在我的數據庫中引用它們,並使用正確的控制器。

有沒有辦法在MVC中動態創建控制器/ ActionResults和相應的視圖?

親切的問候

詹姆斯

+1

嗯..不錯,但比僅僅擁有一個很好的路由/ url方案以及讓一個控制器加載你所需要的要複雜得多。 –

回答

0

你可以採取許多CMS系統使用的是每個頁面的ID與頁面內容一起分配在你的數據庫,然後有一個單獨的控制器中查找方法並顯示頁面

即:

public ActionResult Index(string pageID) 
{ 
    //Query the database for content for page with ID of pageID 
    ViewBag.Content = //Result from DB; 
    return View(); 
} 

,然後在你的頁面只顯示內容。如果內容包含HTML標記使用:

@Html.Raw(ViewBag.Content) 
0

如果你絕對需要的頁面不同的意見,通過同樣的動作去,你可以做這樣的事情:

public ActionResult Index(string pageID) 
{ 
    //Query the database for content for page with ID of pageID 
    ViewBag.Content = //Result from DB; 
    return View("/path/to/other/view"); 
} 

然而,這被認爲是一個不好的做法,根據自己的判斷使用。 http://forums.asp.net/t/1596709.aspx

0

如果你想友好的URL,我會做這樣的事情:

public ActionResult Page(string url) 
{ 
    return Content("content for url"); 
} 

,然後你會看起來像一個路線:

routes.MapRouteLowercase(
    "Page", 
    "{*url}", 
    new {controller = "CmsPage", action = "Page", url = UrlParameter.Optional});