引言

上篇中简单介绍了Ueditor的两种定制方式,想了解的请戳这里:Ueditor的两种定制方式。在项目中,Ueditor该怎么使用更方便呢?很容易让人想到将ueditor放入用户控件页,可以拖到需要的地方。

Ueditor结构

Ueditor使用步骤

一,修改配置文件ueditor.config.js,配置Ueditor路径

1  window.UEDITOR_HOME_URL = "/Ueditor/";//"相对于网站根目录的相对路径"也就是以斜杠开头的形如"/myProject/ueditor/"这样的路径。
2     var URL = window.UEDITOR_HOME_URL || getUEBasePath();//获取Ueditor的路径
3     //测试用 如果不知道路径是什么可以通过alert来测试
4     //alert("URL:" + URL);
5     //alert("window.UEDITOR_HOME_URL:" + window.UEDITOR_HOME_URL);
6     //alert("getUEBasePath():" + getUEBasePath());

上传图片的路径配置。这里将上传的文件放入网站根目录Upload文件夹下,修改配置文件,将修正地址改为URL+“../”

 1 , imagePath: URL + "../"                     //图片修正地址,引用了fixedImagePath,如有特殊需求,可自行配置
 2         //,imageFieldName:"upfile"                   //图片数据的key,若此处修改,需要在后台对应文件修改对应参数
 3         //,compressSide:0                            //等比压缩的基准,确定maxImageSideLength参数的参照对象。0为按照最长边,1为按照宽度,2为按照高度
 4         //,maxImageSideLength:900                    //上传图片最大允许的边长,超过会自动等比缩放,不缩放就设置一个比较大的值,更多设置在image.html中
 5         , savePath: ['Upload']//['UploadFile', 'upload2', 'upload3']      //图片保存在服务器端的目录, 默认为空, 此时在上传图片时会向服务器请求保存图片的目录列表,
 6         // 如果用户不希望发送请求, 则可以在这里设置与服务器端能够对应上的目录名称列表
 7         //比如: savePath: [ 'upload1', 'upload2' ]
 8
 9         //涂鸦图片配置区
10         , scrawlUrl: URL + "net/scrawlUp.ashx"           //涂鸦上传地址
11         , scrawlPath: URL + "../"                            //图片修正地址,同imagePath
12
13         //附件上传配置区
14         , fileUrl: URL + "net/fileUp.ashx"               //附件上传提交地址
15         , filePath: URL + "../"                   //附件修正地址,同imagePath
16         //,fileFieldName:"upfile"                    //附件提交的表单名,若此处修改,需要在后台对应文件修改对应参数
17
18         //远程抓取配置区
19         //,catchRemoteImageEnable:true               //是否开启远程图片抓取,默认开启
20         , catcherUrl: URL + "net/getRemoteImage.ashx"   //处理远程图片抓取的地址
21         , catcherPath: URL + "../"                  //图片修正地址,同imagePath
22         //,catchFieldName:"upfile"                   //提交到后台远程图片uri合集,若此处修改,需要在后台对应文件修改对应参数
23         //,separater:'ue_separate_ue'               //提交至后台的远程图片地址字符串分隔符
24         //,localDomain:[]                            //本地顶级域名,当开启远程图片抓取时,除此之外的所有其它域名下的图片都将被抓取到本地,默认不抓取127.0.0.1和localhost
25
26         //图片在线管理配置区
27         , imageManagerUrl: URL + "net/imageManager.ashx"       //图片在线管理的处理地址
28         , imageManagerPath: URL + "../"                                    //图片修正地址,同imagePath
29
30         //屏幕截图配置区
31         , snapscreenHost: location.hostname                                 //屏幕截图的server端文件所在的网站地址或者ip,请不要加http://
32         , snapscreenServerUrl: URL + "net/imageUp.ashx" //屏幕截图的server端保存程序,UEditor的范例代码为“URL +"server/upload/net/snapImgUp.ashx"”
33         , snapscreenPath: URL + "../"
34         , snapscreenServerPort: location.port                                   //屏幕截图的server端端口
35         //,snapscreenImgAlign: ''                                //截图的图片默认的排版方式
36
37         //word转存配置区
38         , wordImageUrl: URL + "net/imageUp.ashx"             //word转存提交地址
39         , wordImagePath: URL + "../"                       //
40         //,wordImageFieldName:"upfile"                     //word转存表单名若此处修改,需要在后台对应文件修改对应参数

同时修改Uploader.cs类文件,添加“~/”

1  pathbase = pathbase + DateTime.Now.ToString("yyyy-MM-dd") + "/";
2  uploadpath = cxt.Server.MapPath("~/"+pathbase);//获取文件上传路径 

Config.cs类

1 /// <summary>
2 /// Config 的摘要说明
3 /// </summary>
4 public class Config
5 {
6     public static string[] ImageSavePath = new string[] { "Upload" };
7 }

二,新建Ueditor.ascx用户控件页。
1.引入需要的js文件

1 <%@ Control Language="C#" AutoEventWireup="true" CodeBehind="Ueditor.ascx.cs" Inherits="Wolfy.UeditorDemo.UC.Ueditor" %>
2 <script type="text/javascript" src="../Ueditor/ueditor.config.js"></script>
3 <script type="text/javascript" src="../Ueditor/ueditor.all.js"></script>
4 <script type="text/javascript" src="../Ueditor/lang/zh-cn/zh-cn.js"></script>

2.添加editor容器,并实例化uditor

 1 <link href="/Ueditor/themes/default/css/ueditor.css" rel="stylesheet" />
 2 <div id='myEditor' runat="server"></div>
 3 <script type="text/javascript" charset="utf-8">
 4     window.onload = function () {
 5         UE.ui.Editor({
 6             //这部分配置 在ueditor.config.js配置文件中,放在这里是希望可以在Ueditor.ascx.cs中可以动态设置。可以将动态配置的功能在这里设置
 7             wordCount: '<%=WordCount?"true":"false"%>'
 8             , maximumWords: '<%=MaximumWords%>'
 9             , wordCountMsg: '<%=WordCountMsg%>'
10             , wordOverFlowMsg: '<%=WordOverFlowMsg%>'
11             , initialContent: '<%=SetContents %>'
12         }).render("<%=myEditor.ClientID%>");
13     }
14 </script>

3,Ueditor.ascx.cs代码,设置常用属性,这样就可以在引入用户控件的页面,动态的设置属性了。

  1  public partial class Ueditor : System.Web.UI.UserControl
  2     {
  3         public Ueditor()
  4         {
  5             style = new System.Text.StringBuilder();
  6         }
  7         private string setContents;
  8         /// <summary>
  9         /// 给文本赋值 需html解码
 10         /// </summary>
 11         public string SetContents
 12         {
 13             get
 14             { return setContents; }
 15             set
 16             {
 17                 setContents = Server.HtmlDecode(value);
 18             }
 19         }
 20         private string editorName;
 21         /// <summary>
 22         /// 返回文本编辑内容
 23         /// </summary>
 24         public string EditorName
 25         {
 26             get
 27             {
 28                 return editorName;
 29             }
 30             set
 31             {
 32                 editorName = value;
 33                 if (value == "")
 34                 {
 35                     //默认值
 36                     editorName = "editorValue";
 37                 }
 38             }
 39         }
 40         private bool isHide;
 41         ///<summary>
 42         ///控件是否隐藏
 43         ///</summary>
 44         public bool IsHide
 45         {
 46             get { return isHide; }
 47             set
 48             {
 49                 isHide = value;
 50
 51                 if (isHide)
 52                 {
 53                     style.Append("display:none;");
 54                 }
 55                 else
 56                 {
 57                     style.Append("display:block;");
 58                 }
 59             }
 60         }
 61         /// <summary>
 62         /// 设置高度
 63         /// </summary>
 64         public string Height { get; set; }
 65         /// <summary>
 66         /// 设置宽度
 67         /// </summary>
 68         public string Width { get; set; }
 69         ///<summary>
 70         ///设置相对路径
 71         ///</summary>
 72         public string EditorPath { get; set; }
 73         private bool wordCount = false;
 74         /// <summary>
 75         /// 是否开启字数统计
 76         /// </summary>
 77         public bool WordCount
 78         {
 79             get { return wordCount; }
 80             set { wordCount = value; }
 81         }
 82
 83         private int maximumWords = 100000;
 84         /// <summary>
 85         /// 允许的最大字符数
 86         /// </summary>
 87         public int MaximumWords
 88         {
 89             get { return maximumWords; }
 90             set { maximumWords = value; }
 91         }
 92         /// <summary>
 93         /// 字数统计提示
 94         /// </summary>
 95         public string WordCountMsg
 96         {
 97             get
 98             {
 99                 return "当前已输入 {#count} 个字符,您还可以输入{#leave} 个字符";
100             }
101         }
102
103         /// <summary>
104         /// 超出字数限制提示
105         /// </summary>
106         public string WordOverFlowMsg
107         {
108             get
109             {
110                 return "<span style=\"color:red;\">你输入的字符个数已经超出最大允许值,服务器可能会拒绝保存!</span>";
111             }
112         }
113         private System.Text.StringBuilder style = null;
114         protected void Page_Load(object sender, EventArgs e)
115         {
116             // EditorPath = Request.ApplicationPath;
117             if (string.IsNullOrEmpty(Height))
118             {
119                 Height = "100px";
120             }
121             if (string.IsNullOrEmpty(Width))
122             {
123                 Width = "100px";
124             }
125             style.Append("Width:" + Width + ";Height:" + Height + ";");
126             AddStyle(style);
127             //为富文本编辑器 添加name属性 根据name得到 富文本内容 必须
128             myEditor.Attributes.Add("name", this.EditorName);
129
130         }
131         /// <summary>
132         ///  为用户控件 添加样式
133         /// </summary>
134         /// <param name="strStyle"></param>
135         private void AddStyle(System.Text.StringBuilder strStyle)
136         {
137             if (string.IsNullOrEmpty(myEditor.Attributes["style"]))
138             {
139                 myEditor.Attributes.Add("style", style.ToString());
140             }
141             else
142             {
143                 myEditor.Attributes["style"] += style;
144             }
145         }
146     }

测试

将用户控件拖入Test.aspx页面。

 1 <%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Test.aspx.cs" Inherits="Wolfy.UeditorDemo.Test" %>
 2
 3 <%@ Register Src="UC/Ueditor.ascx" TagName="Ueditor" TagPrefix="wolfy" %>
 4
 5 <!DOCTYPE html>
 6
 7 <html xmlns="http://www.w3.org/1999/xhtml">
 8 <head runat="server">
 9     <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
10     <title></title>
11 </head>
12 <body>
13     <form id="form1" runat="server">
14         <div>
15             <wolfy:Ueditor ID="MyUeditor" runat="server" Width="600px" IsHide="false" Height="300px" EditorName="myEditor" />
16         </div>
17     </form>
18 </body>
19 </html>

结果:

上传图片

需要将Uploader.cs和Config.cs的属性中生成操作改为“内容”,还应注意路径问题。

选择图片单击确定,就可以将图片加入编辑器

测试获取编辑器内容,文字及图片等信息。这里必须在web.config配置文件中取消校验,因为获取到的内容可能含有标签,如果添加,则会出现如下黄页错误

在ueditor/net/web.config中将下面的信息,复制到网站的web.config中即可。

1     <httpRuntime requestValidationMode="2.0" maxRequestLength="102400 "/>
2         <pages validateRequest="false" controlRenderingCompatibilityVersion="3.5" clientIDMode="AutoID"></pages>
3         <globalization fileEncoding="utf-8" requestEncoding="utf-8" responseEncoding="utf-8" culture="zh-CN"/>

测试:

1    protected void btnSave_Click(object sender, EventArgs e)
2         {
3             //获取ueditor内容
4             string content = Server.HtmlEncode(Request.Form[MyUeditor.EditorName]);
5             Response.Write(Server.HtmlDecode(content));
6         }

结果

ueditor的赋初值

比如在写随笔的时候,编辑功能的实现,就是这种将数据库中存的内容,重新填入编辑器,编辑后然后保存。这里,由于lz电脑重装系统后,sql一直安装不上就不再测试了。

已经将该实现封装在用户控件的cs中了,可以直接将得到的htmlencode字符串赋给SetContents属性即可。

1 //可以通过下面的设置 实现编辑功能
2             MyUeditor.SetContents = "";

总结

Ueditor在使用的时候,路径确实是很头疼的问题,这里将其放入用户控件页,也是使用方便的一种途径。

博客地址: http://www.cnblogs.com/wolf-sun/
博客版权: 本文以学习、研究和分享为主,欢迎转载,但必须在文章页面明显位置给出原文连接。
如果文中有不妥或者错误的地方还望高手的你指出,以免误人子弟。如果觉得本文对你有所帮助不如【推荐】一下!如果你有更好的建议,不如留言一起讨论,共同进步!
再次感谢您耐心的读完本篇文章。

转载:http://www.cnblogs.com/wolf-sun/p/3495247.html

Ueditor配置及在项目中的使用相关推荐

  1. SpringMVC,MyBatis项目中兼容Oracle和MySql的解决方案及其项目环境搭建配置、web项目中的单元测试写法、HttpClient调用post请求等案例

     要搭建的项目的项目结构如下(使用的框架为:Spring.SpingMVC.MyBatis): 2.pom.xml中的配置如下(注意,本工程分为几个小的子工程,另外两个工程最终是jar包): 其中 ...

  2. [配置]集中管理Vue项目中的http请求

    需求: 项目中难免有多个http请求,如果分散在各个页面中,对于查看和修正都极其不便,所以想对他们进行集中管理: 分析: 思路1:做一个普通的service,用文件http.api.js集中存放htt ...

  3. Disconf介绍,源码下载,环境准备,安装,disconf-web使用和配置介绍,项目中进行配置,项目案例运行

    1.disconf介绍 Distributed Configuration Management Platform(分布式配置管理平台)专注于各种 分布式系统配置管理 的通用组件 / 通用平台,提供统 ...

  4. Memcached的配置,SSH项目中的整合(com.whalin),Memcached工具类,Memcached的代码调用

     1 修改pom.xml,添加依赖文件: <dependency> <groupId>com.whalin</groupId> <artifactId&g ...

  5. android 打包 混淆配置_android 实际项目中混淆文件的配置(参考做法)

    之前对项目混淆一直了解不是很透,趁着打包正式项目的时候有特意的去了解了一番,做些记录,备忘! -optimizationpasses 5 -dontusemixedcaseclassnames -do ...

  6. 双数据源配置(一个项目中链接两个数据库)

    resin文件配置(我用的resin,其他的可自行配置) <database><jndi-name>jdbc/OracleDB</jndi-name><dri ...

  7. Vue项目中最简单的使用集成UEditor方式,含图片上传

    Vue 3 项目参考这里 前言 封面是UEditor的 百度指数 折线图.虽然今天已经是 2018 年,且优秀的富文本编辑器层出不穷(包括移动端),但从图中可以看出UEditor仍然维持着较高的搜索热 ...

  8. Vue项目中最简单的使用集成百度UEditor方式,含图片上传

    前言 封面是UEditor的 百度指数 折线图.虽然今天已经是 2018 年,且优秀的富文本编辑器层出不穷(包括移动端),但从图中可以看出UEditor仍然维持着较高的搜索热度.而不少公司和个人也仍然 ...

  9. spring 项目中集成 Protocol Buffers 示例

    http://blog.csdn.net/fangzhangsc2006/article/details/8687388 本文适用于了解spring框架,同时想在spring项目中使用Protocol ...

最新文章

  1. Hadoop综合大作业补交4次作业:获取全部校园新闻,网络爬虫基础练习,中文词频统计,熟悉常用的Linux操作...
  2. mysql时间格式函数_MySQL时间格式函数
  3. 知道经纬度用python画路线图_神级程序员教你用Python如何画一个中国地图!(好好玩)...
  4. 页面的缓存与不缓存设置
  5. centos7下安装libiconv失败
  6. 嵌入式系统——软件开发模型
  7. yaahp层次分析法步骤_什么是层次分析法?(文末附yaahp软件)
  8. EXP-00091 Exporting questionable statistics问题解决
  9. EAS BOS 序时簿做组织单元隔离
  10. 工程师思维 vs 销售思维
  11. 高盛报告引科技股暴跌 但如今并非 互联网泡沫2.0
  12. 如何用查看wifi密码
  13. 天气太冷不想出被窝?来DIY一个离线语音控制器
  14. 度量学习 度量函数 metric learning deep metric learning 深度度量学习
  15. oracle 查询指定时间范围
  16. 应用安装失败“The application could not be installed: INSTALL_FAILED_USER_RESTRICTED”问题解决
  17. K8S部署Traefik与Ingress、IngressRoute——筑梦之路
  18. rpgmaker是c语言编程吗,一起学rpgmaker脚本(1)【程序猿都能看懂的RGSS入门'`,、('∀`) '`,、】...
  19. index.php 被替换,中间人恶搞替换图片
  20. 使div水平居中的方式

热门文章

  1. cron计划任务使用
  2. Oracle时间函数
  3. 极索(Gsuo)推出新版地图采用Gmap设计思路
  4. 问题集录--正则表达式
  5. 【好书试读】支付宝体验设计精髓
  6. [.net 面向对象程序设计进阶] (18) 多线程(Multithreading)(三) 利用多线程提高程序性能(下)...
  7. eclipse:快捷键(补充。。。)
  8. 后台运行定位,音频,网络电话
  9. Cacti 显示自定义的 SNMP 数据
  10. ubuntu 强制关机后 mysql无法启动