2016-11-20 5 views
-1

多くのビューを含むMVCプロジェクトがあります。 クライアントがコンテンツを編集して保存するようにしたいと思います。MVCのCMSのベストプラクティスとは何ですか?

どのように私はビューのCMS(コンテンツ管理システム)を作ることができますか?

私はRedEditorをtelerikで読んだことがありますが、それはhtmlファイルでのみ動作します。 MVCはrazorを含むcshtmlファイルであり、RedEditorでは処理できません。

私の私は、クライアントのために構築されたウェブサイトを持っている問題で、そして今、彼のような、..etcコンテンツ..Imagesを変更すると、ウェブサイトを変更するには、クライアントの要求、およびかみそり

例により構築されたすべてのビューは、このカミソリ で集約したページは、私が管理クライアントはMVCでシンプルなコンテンツ管理システムを行うために、ライブのウェブサイトに

enter image description here

答えて

1

を、それを反映して保存した後、タイトル&絵&を変更したいです、あなたはおそらくしたいです組織電子物事ページモデルは、コンテンツ項目のリストは、あなたのビューは、コンテンツ項目を反復処理し、それら

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> 
     } 

とで使用していますヘルパーです各Content.ContentTypeはMVCビュー名であるTEMPLATENAMEが含ま

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()); 
    } 

したがって、メインビューでは多くの宗教的な表示がレンダリングされます。 @Html.Raw(content.Body)が含まれています。他の人は、Contentクラスのプロパティを使用して、より多くのstrcuturedコンテンツをレンダリングします。私は管理された画像、ニュース記事などを取得しました。

バックエンドでは、剣道のコントロール(またはその他)を使ってContentBody、ContentTeaserなどを編集できます。適切なContentTypeを設定するだけで、部分表示に名前を付けてレンダリングすることができます。

これで十分です。

+0

ありがとうございました:) 私はクライアントのために構築されたウェブサイトを持っていて、今は彼が好きなようにウェブサイトを変更するクライアントの要求を変更しました。コンテンツ..イメージ... etc、そしてすべてのビューはカミソリで作られました – Jala

+1

あなたがそれを直接行うことができる方法は、剃刀ビューのサーバー側を読んで、それらを編集できるようにするコードをいくつか持つことです。結局のところ、それらはファイルだけで実行時にコンパイルされます。しかし、非コンテンツ管理サイトからコンテンツ管理サイトへの移行は、おそらくCMSを導入することによって最も効果的です。提案として、UmbracoはRazorベースであり、テンプレートのサーバー側の編集を可能にし、エディターが使用するのに非常にいいです。しかし、そのFile:New-Project時間! – Andiih

関連する問題