【问题标题】:What is Best Practice of CMS in MVC? [closed]什么是 MVC 中 CMS 的最佳实践? [关闭]
【发布时间】:2016-11-20 13:51:19
【问题描述】:

我有包含许多视图的 MVC 项目, 我希望客户根据自己的喜好编辑内容并保存。

如何制作 CMS(内容管理系统)的视图?

我在 Telerik 中读过 RedEditor,但它只适用于 html 文件, MVC 是包含 razor 的 cshtml 文件,RedEditor 无法处理。

我的问题是我有一个为客户构建的网站,现在客户要求修改网站,修改内容..图像..etc,以及剃须刀构建的所有视图

例如:这是 razor 制作的页面 我希望管理员客户端修改标题和图片并在保存后将其反映在实时网站中

【问题讨论】:

    标签: asp.net asp.net-mvc razor content-management-system


    【解决方案1】:

    为了在 MVC 中做一个简单的内容管理系统,您可能想要组织事物,使页面模型是内容项的列表,以便您的视图迭代内容项并显示它们

    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 视图名称。

    所以主视图然后渲染了一些部分视图。我的部分视图中最简单的只包含@Html.Raw(content.Body),其他视图则使用 Content 类的属性呈现更多结构化内容:我有一个用于托管图像,一个用于新闻文章等。

    然后在您的后端,您可以使用 Kendo 控件(或其他控件)来编辑 ContentBody、ContentTeaser 等,只需设置一个适当的 ContentType 来命名部分视图以呈现它。

    希望这会给你足够的帮助让你开始。

    【讨论】:

    • 谢谢 :) 我的问题是我为客户建立了一个网站,现在客户要求根据自己的喜好修改网站,修改内容..图像..等,以及由剃须刀
    • 你可以直接做到这一点的唯一方法是让一些代码读取剃刀视图服务器端,并允许对其进行编辑 - 毕竟它们只是文件并且在运行时编译。但是,从非内容托管站点到内容托管站点可能最好通过引入 CMS 来完成。作为建议,Umbraco 是基于 Razor 的,允许在服务器端编辑模板,并且非常适合编辑使用。但是,它的文件:新项目时间!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-21
    相关资源
    最近更新 更多