Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net MVC中CMS的最佳实践是什么?_Asp.net_Asp.net Mvc_Razor_Content Management System - Fatal编程技术网

Asp.net MVC中CMS的最佳实践是什么?

Asp.net MVC中CMS的最佳实践是什么?,asp.net,asp.net-mvc,razor,content-management-system,Asp.net,Asp.net Mvc,Razor,Content Management System,我有一个包含很多视图的MVC项目, 我希望客户编辑他/她喜欢的内容并保存它 我怎样才能使CMS(内容管理系统)的观点 我在telerik中读到过RedEditor,但它只适用于html文件, MVC是包含razor的cshtml文件,我无法通过重新编辑来处理 我的问题是,我有一个为客户建立的网站,现在客户要求修改他喜欢的网站,修改内容..图片..等等,所有的视图由razor建立 这是razor做的页面 我想管理员客户端修改标题和图片&保存后反映在现场网站 为了在MVC中实现一个简单的内容管理系统

我有一个包含很多视图的MVC项目, 我希望客户编辑他/她喜欢的内容并保存它

我怎样才能使CMS(内容管理系统)的观点

我在telerik中读到过RedEditor,但它只适用于html文件, MVC是包含razor的cshtml文件,我无法通过重新编辑来处理

我的问题是,我有一个为客户建立的网站,现在客户要求修改他喜欢的网站,修改内容..图片..等等,所有的视图由razor建立

这是razor做的页面 我想管理员客户端修改标题和图片&保存后反映在现场网站


为了在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; }
}
公共部分类内容
{
公共内容()
{
this.Pages=new HashSet();
}
公共int ContentID{get;set;}
公共字符串ContentTitle{get;set;}
公共字符串ContentImage{get;set;}
公共字符串ContentImageAlt{get;set;}
公共字符串ContentTitleLink{get;set;}
公共字符串ContentImageLink{get;set;}
公共字符串ContentBody{get;set;}
公共字符串内容摘要程序{get;set;}
public System.DateTime ContentDate{get;set;}
已启用公共bool的{get;set;}
public int SortKey{get;set;}
public int ContentTypeID{get;set;}
公共虚拟ContentType ContentType{get;set;}
公共虚拟ICollection页{get;set;}
}
这种观点很简单

        @foreach (var art in Model.Content)
        {
            <text>
                @Html.DynamicPageContent(art)
            </text>
        }
@foreach(Model.Content中的var art)
{
@Html.DynamicPageContent(艺术)
}
使用的助手是

    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());
    }
public static MvcHtmlString DynamicPageContent(此HtmlHelper助手,内容)
{
if(content.ContentType==null)返回新的MvcHtmlString(content.ContentBody);
返回内容==null?null:MvcHtmlString.Create(String.Format(“\n\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类的属性呈现更多结构化内容:我有一个用于托管图像,一个用于新闻文章等

然后在后端,您可以使用剑道控件(或其他控件)编辑ContentBody、ContentStrater等,只需设置一个适当的ContentType来命名要渲染的局部视图


我的问题是我已经为客户建立了一个网站,现在客户要求根据自己的喜好修改网站,修改内容、图片等等,所有由Razorth构建的视图您可以直接做到这一点的唯一方法是使用一些代码读取razor视图服务器端,并允许编辑这些视图——毕竟它们只是文件,在运行时编译。然而,从一个非内容管理的网站到一个内容管理的网站,最好的办法可能是引入CMS。作为建议,Umbraco是基于Razor的,允许服务器端编辑模板,并且非常适合编辑器使用。然而,它的文件:新项目时间!