冯 海

一个程序新人菜鸟的日记,希望大家多多关照。QQ:32316131

bootstrap adminlte教程6:整个百度UEditor富文本编辑器

一,在官网下载,今天下的最新版是1.4.3

http://ueditor.baidu.com

下载utf-8 net

下载后解压,将文件夹改为ueditor

二、在VS项目中打开资 源管理器,将\ueditor文件夹COPY到目录的根目录。

 6、打开需要改造的Create视图和Edit视图,相关的操作方式是完全一样的。我们先打开CmsContent的Create视图。

7、找到需要改造的地方,将原来的注释掉或者删除掉。

 通常视图自动生成的是@Html.EditorFor(model => model.文档内容, new { htmlAttributes = new { @class = "form-control" } })

   现在直接用 @Html.TextAreaFor(model => model.文档内容,htmlAttributes:new { @id="neirong"}) 替换掉。

<div class="form-group">
							<div class="control-label col-md-2">请输入内容</div>
							<div class="col-md-10">
							
								
								@Html.TextAreaFor(model => model.Contents, htmlAttributes: new { @id = "neirong" })
								@*@Html.EditorFor(model => model.Contents, new { htmlAttributes = new { @class = "form-control" } })*@
								@Html.ValidationMessageFor(model => model.Contents, "", new { @class = "text-danger" })
							</div>
						</div>

 

8.然后找到底部的脚本代码@Scripts.Render("~/bundles/jqueryval")

  替换为@Scripts.Render("~/bundles/jqueryval", "~/ueditor/ueditor.config.js", "~/ueditor/ueditor.all.js") 

不过我是用了布局,所以我要找到_AdminLayout 和  _Layout.cshtml 两个布局页面更改。

@Scripts.Render("~/bundles/adminlte", "~/ueditor/ueditor.config.js", "~/ueditor/ueditor.all.js")

  

紧接着上面的代码,在下面写如下代码,这里我没有做任何配置设置,因为我的全站不存在第二种样式,所以我直接在后面的ueditor配置文件中设置了。

官方示例中建议使用工厂方法getEditor创建和引用编辑器实例,如果在某个闭包下引用该编辑器,直接调用UE.getEditor('editor')就能拿到相关的实例

<script type="text/javascript">

var nreditor = UE.getEditor('neirong'); 
</script>

下面是做了参数配置的

<script type="text/javascript">
var editorOption = { 
initialFrameWidth: 784,
initialFrameHeight: 400
};
var editor = new baidu.editor.ui.Editor(editorOption);
editor.render('neirong');
</script>

 

我先使用了第种未配置 的,实际 我在想,这个JS在这里引用不好,我以后不同的显示调用的大小不一样,最好在页面中引用JS

先作测试。

<script type="text/javascript">

		var nreditor = UE.getEditor('neirong');
	</script>

  进Create页面看效果。

好烦这么多功能,可是没办法,那官网的 umedit硬是下不下来。

10、现在运行就应该能看到富文本编辑效果了,但是这样还不行,很多功能还不正常需要对ueditor进行。

11、打开~/ueditor/ueditor.config.js。

      再往下面的就是配置的参数了,文件上方的官方提示已经说了“所有被注释的配置项均为UEditor默认值。”

     所以根据自己的需要,删除参数前面的“//”就行了,一定不要把后面的逗号也删除了。

 

所以我觉和得还是将上面的JS在页面引用最好了,我马上 试一下。

取消L布局中的js的引用。

然后在Create视图中引用JS,这里需要在@sestion中引用哟,在最后加上

	</div>
@section Scripts {
	
	<script type="text/javascript">
var editorOption = {
//initialFrameWidth: 784,
initialFrameHeight: 400
};
var editor = new baidu.editor.ui.Editor(editorOption);
editor.render('neirong');
</script>
	
	
	}

  再看效果,出来了,高度出来了。

 

 

 

12、配置config.json。打开~/ueditor/net文件夹下的config.json文件。

如果是按照我的实施规则来的话,此文件不用动。如果有变动的话需要修改图片访问前缀 "imageUrlPrefix": "/ueditor/net/"。如果配置错误的前缀路径,能正确上传图片等,但是不能在线编辑、不能访问,图片就显示不正常。验证是否正确的方法是在富文本编辑器里上传个图片,如果能显示此图片则正常。

同时,也可以配置其他项。例如"imageMaxSize": 2048000, /* 上传大小限制,单位B */  等等。

 我进去更改了所有上传大小,他默认的都是100M,50M,图片5M,呵,我改成图片500K,文件3M,视频500K等

13.然后测试内容

 

 结果需要配置方法中取消这个验证。

具体在方法前加一句false

 [HttpPost]
        [ValidateAntiForgeryToken]
		[ValidateInput(false)]
		public async Task<ActionResult> Create([Bind(Include = "ColumnId,Title,Contents,CmsPermission")] CmsContent cmsContent, FormCollection form)
        {
		    var	 dt = DateTime.Now;

 然后大神们说前台有简化的编辑嘎哈,这个只能用后台上。

 

13、然后在相关视图的控制器中Create和Edit 的httpPost方法中加入 [ValidateInput(false)]属性。 然后数据库将html标签保存到数据库中。如果不加入此注解,表单将不能正确的提交,并出现 ”潜在的风险的Request.Form值。

14、在系统自动创建的Detials操作方法的视图中找到对应的显示位置,将原来的@Html.DisplayFor(model => model.文档内容)改为@Html.Raw(Model.文档内容),也就是对数据提取出来的Content 字段的html标签不进行编码。

这样就能正常使用了。

 

 

U新建不存在,但Edit就出错了,原因是很多字段是非空的,特别日期,你读出来,他会变,除非你再FORMAT,可我当时没有这样做,而且几个下拉也有问题,POST为NULL

搞了一天,现将源码发下

   // 详细信息,请参阅 https://go.microsoft.com/fwlink/?LinkId=317598。
        [HttpPost]
        [ValidateAntiForgeryToken]
		[ValidateInput(false)]
		public async Task<ActionResult> Edit([Bind(Include = "Id,ColumnId,Title,Contents,CreatUser,ReplyID,PcIp,ReplyCount,CmsPermission,UserList,yulou1")] CmsContent cmsContent, FormCollection form)
		{
			//if (Request["ColumnId1"].ToString()!=null)
			//{
			//	cmsContent.ColumnId =int.Parse( Request["ColumnId1"].ToString());

			//}
			//var s = Request["ColumnId1"];
			cmsContent.CreatTime = DateTime.Now;
			var winnars = from x in form.AllKeys        ///选择所有的传进来的form

							  //var winnars = from x in form["selectRole"]
						  where form[x] != "false"

						  select x;

			string Lstring = "";

			//foreach (var id in winnars)
			foreach (var id in winnars)
			{
				if (id!= "Contents"&& id != "ColumnId" && id != "Title"&& id != "Id" && id != "ReplyCount" && id != "CreatUser" && !id.Contains("RequestVerificationToken")) {
				Lstring = Lstring + id + ",";
				}


			}
			cmsContent.CmsPermission = Lstring;
			if (ModelState.IsValid)
            {
                db.Entry(cmsContent).State = EntityState.Modified;
                await db.SaveChangesAsync();
                return RedirectToAction("Index");
            }
            return View(cmsContent);
        }

  

 

 

 

@model jsdhh2.Models.CmsContent

@{
    ViewBag.Title = "Edit";
}

<h2>Edit</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    
    <div class="form-horizontal">
        <h4>CmsContent</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        @Html.HiddenFor(model => model.Id)

		<div class="form-group">
			<div class="col-md-2">请选择栏目</div>
			@*@Html.LabelFor("选择栏目", htmlAttributes: new { @class = "control-label col-md-2" })*@
			<div class="col-md-10">
				@Html.DropDownList("ColumnId", new SelectList(ViewBag.drolistmenu, "Value", "Text"), "请选择")

				@Html.ValidationMessageFor(model => model.ColumnId, "", new { @class = "text-danger" })
			</div>
		</div>

      

        <div class="form-group">
			<div class="control-label col-md-2">标题</div>
            <div class="col-md-10">
                @Html.EditorFor(model => model.Title, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Title, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
	
            <div class="col-md-10">
				<div class="control-label col-md-2">请输入内容</div>
			
				@Html.TextAreaFor(model => model.Contents, htmlAttributes: new { @id = "neirong" })
                @*@Html.EditorFor(model => model.Contents, new { htmlAttributes = new { @class = "form-control" } })*@
                @Html.ValidationMessageFor(model => model.Contents, "", new { @class = "text-danger" })
            </div>
        </div>
		
		<div class="form-group">
			<div class="control-label col-md-2">选择阅读权限</div>
			<div class="col-md-10">
				@Html.CheckBox("All", true)全选
				@foreach (var item in (MultiSelectList)ViewBag.rolelist1)
				{
					@*@Html.CheckBox("sefe",item.Value)@item.Value*@

					@Html.CheckBox(@item.Value, false)@item.Value
					@*<input type="checkbox" name="selectRole" value=@item.Value id=@item.Value/>@item.Value*@

				})

				@*@Html.EditorFor(model => model.CmsPermission, new { htmlAttributes = new { @class = "form-control" } })*@
				@Html.ValidationMessageFor(model => model.CmsPermission, "", new { @class = "text-danger" })
			</div>
		</div>


 
		<div style="display:none" >
			@Html.EditorFor(model => model.Id, new { htmlAttributes = new { @class = "form-control" } })
			
			@Html.EditorFor(model => model.ReplyCount, new { htmlAttributes = new { @class = "form-control" } })
            @*@Html.EditorFor(model => model.ColumnId, new { htmlAttributes = new { @class = "form-control" } })*@
			@*@Html.EditorFor(model => model.CmsPermission, new { htmlAttributes = new { @class = "form-control" } })*@
			@Html.EditorFor(model => model.CreatUser, new { htmlAttributes = new { @class = "form-control" } })
			 

		</div>
		     
        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Save" class="btn btn-default" />
            </div>
        </div>
    </div>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {

	<script type="text/javascript">
var editorOption = {
//initialFrameWidth: 784,
initialFrameHeight: 400
};
var editor = new baidu.editor.ui.Editor(editorOption);
editor.render('neirong');
	</script>


}

  

posted @ 2017-06-02 13:33  秋天来了哟  阅读(1628)  评论(0编辑  收藏  举报
认识就是缘份,愿天下人都快乐!
QQ: 32316131
Email: 32316131@qq.com