爲了做到在MVC一個簡單的內容管理系統,你可能想organiz Ë東西,這樣的頁面模式是內容項的列表,讓您的視圖迭代的內容項目,並將其顯示
public partial class Content
{
public Content()
{
this.Pages = new HashSet<Page>();
}
public int ContentID { get; set; }
public string ContentTitle { get; set; }
public string ContentImage { get; set; }
public string ContentImageAlt { get; set; }
public string ContentTitleLink { get; set; }
public string ContentImageLink { get; set; }
public string ContentBody { get; set; }
public string ContentTeaser { get; set; }
public System.DateTime ContentDate { get; set; }
public bool enabled { get; set; }
public int SortKey { get; set; }
public int ContentTypeID { get; set; }
public virtual ContentType ContentType { get; set; }
public virtual ICollection<Page> Pages { get; set; }
}
的觀點僅僅是
@foreach (var art in Model.Content)
{
<text>
@Html.DynamicPageContent(art)
</text>
}
,並且採用的是幫手
public static MvcHtmlString DynamicPageContent(this HtmlHelper helper, Content content)
{
if (content.ContentType==null) return new MvcHtmlString(content.ContentBody);
return content == null ? null : MvcHtmlString.Create( String.Format("\n<!--{0}: {1}({2})-->\n",content.ContentID, content.ContentType.ContentTypeDescription, content.ContentTypeID)+helper.Partial(content.ContentType.TemplateName, content).ToString().Trim());
}
其中每個Content.ContentType包含TEMPLATENAME其是MVC視圖名。
所以主視圖然後呈現了一些parital意見。最簡單的部分視圖只包含@Html.Raw(content.Body),其他人使用Content類的屬性渲染更多的結構化內容:我有一個用於託管圖像,一個用於新聞文章等。
然後在你的後端可以使用劍道控件(或其他)編輯ContentBody,ContentTeaser等,只設置一個適當的ContentType這名局部視圖來渲染它。
希望這會給你足夠的讓你開始。
謝謝:) 我的問題,我有一個客戶建立網站,現在的客戶要求修改的網站,因爲他喜歡,修改內容..Images ..等,以及所有視圖通過剃刀 – Jala
唯一建你可以直接做的方式是讓一些代碼讀取剃刀視圖服務器端,並允許編輯這些代碼 - 畢竟它們只是文件,並在運行時編譯。但是,從非內容管理網站轉到內容管理網站最好是通過引入CMS來完成。作爲一個建議,Umbraco基於Razor,允許服務器端對模板進行編輯,對編輯者來說非常好用。但是,它的File:New-Project時間! – Andiih