ASP.NET MVC 中使用 UEditor 富文本编辑器

在上篇《使用ASP.NET
MVC+Entity Framework快速搭建博客系统
》中,已经基本上可以实现博客分类和博客文章的CURD。但是,文章编辑界面实在是……

好吧,咱得搞专业点。来个传说中的富文本编辑器,度娘了一下,发现 KISSY Editor 和 UEditor 貌似比较简单的样子,既然这样就用百度的
UEditor 吧,到这里下载最新的.NET版。

解压后,将默认目录名称改为 ueditor 然后复制到项目的 Content 目录中,大概就像下图中的样子

打开~/Views/Post/Create.cshtml 将代码替换为下面的代码


@model ShowPin.Web.Models.Post

@{
ViewBag.Title = "Create";
}

<h2>Create</h2>

@using (Html.BeginForm())
{
@Html.AntiForgeryToken()

<div class="form-horizontal">
<h4>Post</h4>
<hr />
@Html.ValidationSummary(true)
<div class="form-group">
@Html.LabelFor(model => model.CategoryId, "CategoryId", new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("CategoryId", ViewBag.CategoryId as IQueryable<SelectListItem>, String.Empty, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.CategoryId)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Id, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.Id, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Id)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.Title, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.Title, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.Title)
</div>
</div>

<div class="form-group">
@Html.LabelFor(model => model.Content, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextAreaFor(m => m.Content)
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.CreateDate, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.CreateDate, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.CreateDate)
</div>
</div>

<div class="form-group">
@Html.LabelFor(model => model.hits, new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.TextBoxFor(model => model.hits, new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.hits)
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}

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

@section Scripts {
@Scripts.Render("~/bundles/jqueryval", "~/Content/ueditor/ueditor.config.js", "~/Content/ueditor/ueditor.all.js")
<script type="text/javascript">
var editorOption = {
initialFrameWidth: 784,
initialFrameHeight: 400
};
var editor = new baidu.editor.ui.Editor(editorOption);
editor.render(‘Content‘);
$(‘form‘).submit(function () {
$(‘#Content‘).val(editor.getContent());
});
</script>
}

其中,下面这点JS代码就是初始化 UEditor 的代码


<script type="text/javascript">
var editorOption = {
initialFrameWidth: 784,
initialFrameHeight: 400
};
var editor = new baidu.editor.ui.Editor(editorOption);
editor.render(‘Content‘);
$(‘form‘).submit(function () {
$(‘#Content‘).val(editor.getContent());
});
</script>

在浏览器上输入URL:http://localhost:10223/Post/Create

提交后……(*^__^*) 嘻嘻……出错了:

从客户端(Content="<p
style="text-align...")中检测到有潜在危险的 Request.Form 值。

修改相应的 Action 代码如下


[HttpPost]
[ValidateInput(false)]
[ValidateAntiForgeryToken]
public async Task<ActionResult> Create([Bind(Include="Id,Title,Content,CreateDate,hits,CategoryId")] Post post)
{
if (ModelState.IsValid)
{
db.Posts.Add(post);
await db.SaveChangesAsync();
return RedirectToAction("Index");
}

ViewBag.CategoryId = new SelectList(db.Categories, "Id", "Title", post.CategoryId);
return View(post);
}

最关键的就是:[ValidateInput(false)] 这句了,按下 Shift+F6 生成当前项目,然后再提交。

OK,UEditor 已经整合好了,下面就是本文的重点了

UEditor 上传图片

将 ~/Content/ueditor/net/imageUp.ashx 文件删掉,新建一个“一般处理程序”,命名为 imageUp.ashx
编写如下代码


using System;
using System.Collections;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace ShowPin.Web.Content.ueditor.net
{
/// <summary>
/// imageUp 的摘要说明
/// </summary>
public class imageUp : IHttpHandler
{

public void ProcessRequest(HttpContext context)
{
if (!String.IsNullOrEmpty(context.Request.QueryString["fetch"]))
{
context.Response.AddHeader("Content-Type", "text/javascript;charset=utf-8");
context.Response.Write(String.Format("updateSavePath([{0}]);", String.Join(", ", Config.ImageSavePath.Select(x => "\"" + x + "\""))));
return;
}

context.Response.ContentType = "text/plain";

//上传配置
int size = 2; //文件大小限制,单位MB //文件大小限制,单位MB
string[] filetype = { ".gif", ".png", ".jpg", ".jpeg", ".bmp" }; //文件允许格式

//上传图片
Hashtable info = new Hashtable();
Uploader up = new Uploader();

string path = up.getOtherInfo(context, "dir");
if (String.IsNullOrEmpty(path))
{
path = Config.ImageSavePath[0];
}
else if (Config.ImageSavePath.Count(x => x == path) == 0)
{
context.Response.Write("{ ‘state‘ : ‘非法上传目录‘ }");
return;
}

info = up.upFile(context, path + ‘/‘, filetype, size); //获取上传状态

string title = up.getOtherInfo(context, "pictitle"); //获取图片描述
string oriName = up.getOtherInfo(context, "fileName"); //获取原始文件名

HttpContext.Current.Response.Write("{‘url‘:‘" + info["url"] + "‘,‘title‘:‘" + title + "‘,‘original‘:‘" + oriName + "‘,‘state‘:‘" + info["state"] + "‘}"); //向浏览器返回数据json数据
}

public bool IsReusable
{
get
{
return false;
}
}
}
}

其实就是上一般删除的那个文件的代码,只是……唉 才疏学浅,不知道怎么解释……然后可以看到,文件上传功能可以用了

默认是上传到这个路径,可以根据需要自行修改

嗯,今天就到这里吧

时间: 2024-10-10 01:44:46

ASP.NET MVC 中使用 UEditor 富文本编辑器的相关文章

ASP.NET MVC5 中百度ueditor富文本编辑器的使用

随着网站信息发布内容越来越多,越来越重视美观,富文本编辑就是不可缺少的了,众多编辑器比较后我选了百度的ueditor富文本编辑器. 百度ueditor富文本编辑器分为两种一种是完全版的ueditor,另一种是ueditor的迷你版umeditor. 一.我们先讲完全版的ueditor. 1.建立数据模型. 2.建立对应的控制器和视图. 3.访问http://ueditor.baidu.com/website/download.html 进入开发版的下载页面,下载.net UTF-8版本,现在最新

WEB项目中使用UEditor(富文本编辑器)

Ueditor富文本编辑器是在很多项目里经常用到的框架,是百度开发团队开发的一款很好用的富文本编辑器 下面就是我在一个系统里用到的,有了富文本编辑器,管理员使用起来不是很方便? 所以本博客介绍这个富文本编辑器的使用哈!觉得写得不错的请点赞哈,有建议欢迎提哈!^V^ 下载链接:http://ueditor.baidu.com/website/download.html 具体的使用请看官网:http://ueditor.baidu.com/website/index.html 下载富文本编辑器后,我

在MVC中应用百度富文本编辑器

1.下载.NET版本的百度富文本编辑器,前往 下载.NET版本百度富文本框 2.解压下载的.zip压缩包,将utf8-.net文件夹名称改为:ueditor,复制到MVC根目录下面.结构如下: App_Code 上的文件是应用程序的源码 Config.cs 负责读取配置文件 Handler.cs 是请求处理器的基类,提供了一些基本对象的访问以及输出控制.如果需要增加处理器,应该从该基类继承 PathFormatter.cs 解析 PathFormat,把信息填充为运行时信息. *Handler.

在网站中使用UEditor富文本编辑器

UEditor是由百度WEB前端研发部开发的所见即所得的开源富文本编辑器,具有轻量.可定制.用户体验优秀等特点. 官网链接 进入到下载页面,选择相应的版本下载 这里我们使用ASP.NET开发,所以选择.NET版本. 将文件解压后,目录结构如下: 将外部js引入到页面中 <script src="Assets/js/ueditor/ueditor.config.js" type="text/javascript"></script> <s

Vue 中使用UEditor富文本编辑器-亲测可用-vue-ueditor-wrap

其中UEditor中也存在不少错误,再引用过程中. 但是UEditor相对还是比较好用的一个富文本编辑器. vue-ueditor-wrap说明 Vue + UEditor + v-model 双向绑定.之所以有这个 repo 的原因是: ?1.UEditor 依然是国内使用频率极高的所见即所得编辑器而 Vue 又有着广泛的使用,所以将两者结合使用,是很多 Vue 项目开发者的切实需求. ?2.目前没有发现满足这种需求,而使用又很方便的 repo.有的可能也只是简单的暴露一个 UEditor 的

vue2.0项目中使用Ueditor富文本编辑器示例

最近在vue项目中需要使用富文本编辑器,于是将Ueditor集成进来,作为公共组件.在线预览:https://suweiteng.github.io/vue2-management-platform/#/editor项目地址:https://github.com/suweiteng/vue2-management-platform 记得在右上角点个赞哦~ 1.放入静态资源并配置 首先把官网下载的Ueditor资源,放入静态资源src/static中.修改ueditor.config.js中的wi

在Vue2.0中集成UEditor 富文本编辑器

在vue的'项目中遇到了需要使用富文本编辑器的需求,在github上看了很多vue封装的editor插件,很多对图片上传和视频上传的支持并不是很好,最终还是决定使用UEditor. 这类的文章网上有很多,我进行了摸索.手写代码.汇总.排版,形成了这篇文章. 下载对应的UEditor源码 首先,去官网上下载UEditor的源码,根据你后台语言的不同下载对应的版本(PHP.Asp..Net.Jsp),下载地址. 下载之后,把资源放到 /static/ue/ 静态目录下.文档结构如下: (我把UEdi

vue2.0项目中使用Ueditor富文本编辑器应用中出现的问题

1.如何设置config中的内容 readonly:true,//只读模式wordCount:false,//是否开启字数统计enableAutoSave: false,//自动保存功能 重点:enableAutoSave不一定生效,怎么办? ueditor.config.js文件中设置enableAutoSave参数为false就可以关闭本地保存功能. //启用自动保存 ,enableAutoSave: false ueditor1.4.3版本是没有效果的,需要修改代码,在ueditor1.5

django之百度Ueditor富文本编辑器后台集成

Python3 + Django2.0 百度Ueditor 富文本编辑器的集成 百度富文本编辑器官网地址:http://fex.baidu.com/ueditor/ 疑问:为什么要二次集成? 答案:因为百度富文本编辑器Ueditor没有对python的支持 步骤1: 在官网下载Ueditor的任意版本代码:http://ueditor.baidu.com/website/download.html#ueditor 步骤2: 将下载的代码放入到 django 项目中 步骤3:前端引用 在前端HTM