2011-05-03 159 views
1

我爲我擁有的一個網站構建了一個非常簡單的內容管理器。對於每個頁面,用戶都可以通過使用管理工具來控制顯示的內容。帶動態內容的動態頁面

現在,我的客戶希望能夠添加整個頁面。現在,我必須創建一個新頁面,然後他們可以進入並編輯該頁面的內容。但他們不想再這樣做,他們想創造自己,而不必到我這裏來。他們希望網頁的名稱也一致 - 所以如果他們創建了「關於」頁面,它將是mysite.com/about而不是mysite.com/dynamicpage/8

我需要能夠做到這一點,而不使用第三方CMS,考慮到已經有一個健壯的Admin後端。有沒有關於如何做到這一點的任何教程?

我正在使用ASP.NET MVC 2,.NET 4.0。

+0

我可能在這裏誤解了一些東西。難道你不能通過自定義路由處理程序來實現嗎? – 2011-05-03 15:43:55

回答

2

一個簡單的解決方案在這裏找到答案(和你應該定製有點):

只需在ContentController或其他東西上創建一個包含變量(如pageName或其他)的路由。 AKA(mysite.com/content/{pageName})。您的操作方法需要頁面名稱,然後通過數據庫加載HTML。然後,它只是返回的HTML作爲內容響應

return new ContentResult 
{ 
    Content = htmlFromDatabase, 
    ContentType = "text/html" // Change if you want depending on DB values 
}; 

然後你只需要一個管理控制檯,以更新內容數據庫條目和客戶端可以添加/刪除,只是在數據庫中存在/編輯條目。

1

如果您可以轉移到MVC3,您可以使用Razor從字符串中執行腳本(頁面)的功能。

I'm using this open-source project to do something very similar

然後,您需要添加的是管理區域中的一個頁面,用於編輯虛擬頁面,並將結果填入數據庫。

您的控制器將檢查請求的路由並從您的數據庫中檢索正確的頁面記錄,使用Razor執行頁面(並以字符串形式獲取結果)並將結果發送回客戶端。

這將讓您輕鬆地在頁面中包含動態內容(腳本可以說引用部分視圖返回動態項目)。如果他們所需要做的只是編輯HTML,那可能是矯枉過正。