XHEditor(MVC4+DWZ) 部分问题的解决

时间:2021-08-20 05:03:37

百度上下载了xheditor1.2.1

一、使用方法:

1、把解压的目录copy到VS中;

2、在需要用的View页面中引用js

<script src="~/xheditor/xheditor-1.2.1.min.js"></script>
<script src="~/xheditor/xheditor_lang/zh-cn.js"></script>

这里注意,如果你的目录不是xheditor,那么对不起,你一辈子也看不到效果,这儿耗费我了2个小时!

3、在页面中加一个TextArea控件

<textarea id="elm2" name="elm2" class="xheditor-mfull {upImgUrl:'@Url.Action("Upload")',upImgExt:'jpg,jpeg,gif,png'}" style="width: 480px;height:500px"></textarea>

这里使用的是class方式,也可以用JS方式,具体去看xheditor使用文档

现在这可以用了,但还没有接收文件,就是那个@Url.Action("Upload")

进入相关controller,加一个公共的Upload

         #region 上传文件接收
[HttpPost]
public string Upload()
{
int MaxSize = ; // 最大上传大小,默认是2M
string newFile="";
string ext="";
string fn = "";
try
{
HttpFileCollectionBase fc = Request.Files;
HttpPostedFileBase f = Request.Files[];
if (f.ContentLength > MaxSize || f.ContentLength == )
return "{'err':'上传失败!文件大小不正确,必须是在0字节以上,2M字节以内','msg':''}"; if (!Directory.Exists(Server.MapPath("~/Upload")))
{
Directory.CreateDirectory(Server.MapPath("~/Upload"));
}
ext = f.FileName.Substring(f.FileName.LastIndexOf("."));
fn = DateTime.Now.ToString("yyyMMddHHmmssfff");
newFile=Server.MapPath("~/Upload") + "\\" + fn + ext;
f.SaveAs(newFile); }
catch(Exception ex)
{
return "{'err':'上传失败!'"+ex.Message+",'msg':''}";
}
return "{'err':'','msg':{'url':'!/Upload/" + fn+ext + "','localname':'" + ext + "','id':'1'}}";
}
#endregion

上传文件接收

好了,可以上传文件了。

二、小问题

1、使用出现了奇怪的问题

我在页面中使用了页面上传文件控件,就是<input id="xxx" name="xxx" type="file" />,这是一般人也会遇到的,在新闻编辑中,不仅需要一个html文本编辑器,有时候还需要上传标题图片什么的,但是这里出了问题!

问题的现象是:在正常的增加新记录页面中同时拥有上传控件与xheditor,如图

XHEditor(MVC4+DWZ) 部分问题的解决

如果我在图文内容中输入的文字只有一行,其它栏正常录入,封面图片也正常上传一个,那么点击“提交”后可以正常提交。

但是,可但是,如果你在图文内容中按了一下回车,让文本换了行,那么你再点击“提交”后,界面一闪,就没事了,这时也没有提交到后台,后台设置的断点根本没用,也就是说,好像界面执行了什么,但没按我要求的提交到指定的action里,我就晕,同样的代码,只不过是换了个行,怎么就提交到另一个空间去了呢?

经过DWZ群里的@漠听风吟的远程,也只是发现出现个“xxx没找到或为空”,但每次执行都会不同,郁闷了一个下午+一个晚上+一个上午

问题的解决:

如果要在DWZ里上传文件,必须按照DWZ的要求,在Form中增加一个onsubmit,如下

 onsubmit = "return iframeCallback(this);"

正是它在捣乱!!!

用xheditor编辑器,也是在页面中增加出一个iframe来,大家可以在页面中用“开发人员工具”看一下,是不是增加了iframe,所以,我合理地怀疑它们有冲突。

于是,我将代码做了一点改动

//将
onsubmit = "return iframeCallback(this);"
//改成了
onsubmit = "return navTabSearch(this);"

并去掉了上传标题图片部分,结果就是终于正常了,在xheditor中怎么写内容就都没事了。

2、查找带回无法返回附件文件名

一入DWZ门愁似海啊,步步惊心!

这不是把上传图片摘出来了吗?本想放到dialog中,结果就需要在dialog中把上传后的文件名带回来,再看看DWZ的原码,有这部分内容,是混合在一起的,其中有关于附件上传的示例。

于是就照着做了一遍,结果,没任何返回,纳闷,why?

把示例运行一遍,嘿,竟然也无法返回文件名,次奥,什么情况?

分析:我改过示例代码?不记得了。版本太老?1.4.5,最新1.4.6。

决定:下载个最新试试,费了半天劲,下了,运行,同样没有返回文件名,次奥again

分析:版本太高?

决定:找个没用过的版本,费了半天劲,下了,运行,同样没有返回文件名,次奥x3

看到示例里有段代码是类似这样的

$.bringBack({id:'1',fileName:'zzzz.txt'})

于是把它放到dialog的form的onsubmit中,咦,返回了!有信心了,至少不是DWZ版本的问题了

最后,在controller的代码中,用返回string类型调试N次,得出以下有效代码

 //把字串放到变量里是为了检测输出时是否正确用的
string tmp="{\"id\":\"0\",\"fileName\":\"/Upload/" + fn + ext + "\",\"attachmentPath\":\""+newFile.Replace("\\","/")+"\",\"attachmentSize\":\"" + ImgFile.ContentLength.ToString() + "\"}";
return tmp;

解释下:

A:fn+ext是上传后生成的新文件名与扩展名

B:newFile是带着绝对路径的文件名,如:D;\\Project 2012\MVC\aaa.jpg",但这里注意,我把双斜线换了,因为如果不换,这个JSON会不起作用,也就是说,不会返回文件名什么的,也就是网上有部分人问的问题,为什么DWZ上传附件无法带回文件名,切记了!

另外这里返回ActionResult也是不行了,我曾经试过这样返回

 public ActionResult Success_UploadLookUp(string Id, string FileName, string AttachmentPath, string AttachmentSize)
{
return Json(new
{
id = Id,
fileName = FileName,
attachmentPath = AttachmentPath,
attachmentSize = AttachmentSize
}, JsonRequestBehavior.AllowGet);
}

上述代码放在一般DWZ要求返回JSON的地方绝对好使,但在这里就不行了,只能返回string类型

END

2014-7-23

我次奥xheditor,放弃了,不用了,这破玩意知道的人少,用的人也少,多年不更新了,气死我了,在DWZ里如果改个字体大小,就TMD提交不了!我去,什么破玩意!建议大家也换吧

我现在换了KindEditor4.1.10,经过简单调试,确定可用

XHEditor(MVC4+DWZ) 部分问题的解决的更多相关文章

  1. 未能加载文件或程序集&OpenCurlyDoubleQuote;System&period;Web&period;WebPages&period;Razor&comma; Version&equals;2&period;0&period;0&period;0&comma; Culture&equals;neutral&comma; PublicKe

    https://bbs.csdn.net/topics/392046946 电脑没安装mvc4,应该是,解决这个问题一上午了今天,然后装完了后就好了! https://www.microsoft.co ...

  2. DWZ集成的xhEditor编辑器浏览本地图片上传的设置

    有关xhEditor的文件上传配置官方文档链接:http://i.hdu.edu.cn/dcp/dcp/comm/xheditor/demos/demo08.html 一.xhEditor图片上传的配 ...

  3. MVC4&period;0 解决Controllers与Areas中控制器不能同名问题

    在使用MVC4.0的时候,难免会遇到在根目录下的Controllers中添加的控制器名称可能会跟在Areas中的某个区域下的控制器名称一样.这个时候访问Areas下面的Controller/Actio ...

  4. 解决VS2012新建MVC4等项目时,收到加载程序集&OpenCurlyDoubleQuote;NuGet&period;VisualStudio&period;Interop…”的错误

    初装V2012,新建MVC4新项目时出现以下错误: 解决方法为: 通过VS2012的“工具-扩展和更新-联机”安装“NuGet Package Manager”扩展包,可以顺利新建MVC4项目啦!

  5. 使用asp&period;net MVC4中的Bundle遇到的问题及解决办法

    背景 之前有过使用MVC3的经验,也建过MVC4的基本样例看过,知道有bundle这么一个方法. 近日想建个网站使用MVC4,但是我觉得在基本样例上改不好,有太多无用的东西,所以就建了一个空白的MVC ...

  6. MVC4发布到IIS,出现HTTP 错误 404&period;0 - Not Found的解决方法

    MVC4发布到IIS,出现HTTP 错误 404.0 - Not Found的解决方法 1.出现的错误页面

  7. &lbrack;MVC4&rsqb;Data Annotations Extensions&colon;无法使用EmailAddress等验证特性的解决方法

    本文地址:http://www.cnblogs.com/egger/p/3404159.html  欢迎转载 ,请保留此链接๑•́ ₃•̀๑! 数据注解(Data Annotations) Web应用 ...

  8. MVC4升级MVC5导致原项目出错的解决方法

    原文:MVC4升级MVC5导致原项目出错的解决方法 出现安全透明方法"WebMatrix.WebData.PreApplicationStartCode.Start()"尝试访问安 ...

  9. mvc4 发布,遇到 403&period;14 问题,并且iis提示打开目录浏览。。。解决办法

    经测试,只需要在web.config的system.web的同级节点,添加如下代码,即可完美运行.原理参考文章:一.<validation validateIntegratedModeConfi ...

随机推荐

  1. ASP数组全集,多维数组和一维数组&lbrack;转&rsqb;

    ASP数组是比较好用的装载大量数据的容器.1 定义数组 有两种方式:DIM和REDIM. DIM定义的是固定个数.数据类型的数组:而REDIM则不同,它可以定义不同类型的数据,也可以定义个数并非固定的 ...

  2. DOM高级

    表格应用 获取 tBodies, tHead, tFoot, rows, cells 隔行变色 鼠标移入高亮, 添加,删除一行 DOM的方法使用 <!DOCTYPE html PUBLIC &q ...

  3. C&num;--GDI&plus;的LinearGradientBrush类

    命名空间:System.Drawing.Drawing2D LinearGradientBrush对象用颜色线性渐变填充图形.简言之,颜色渐变包含一种在两种指定的颜色之间渐变的颜色,渐变的方向是沿着指 ...

  4. location 、history

    location.href= location.reload() history.go()  0   1  -1 history.back() history.forward() history.le ...

  5. 802&period;11 wireless 六

    802.11 wireless 6Bluetooth蓝牙1.无线个人网络(WPAN)的无线电系统2.普通链路范围 10米/0dBm(100米/20dBm)3.传输频率在2.402 GHZ和2.480 ...

  6. description 数组的中文打印

    打印一个对象:NSLog(@"%@", stu); 默认情况下打印的时对象的名字和内存地址:这时需要重写description方法 // 重写description方法 - (NS ...

  7. 使用Windows Azure创建Linux系统虚拟机-下

    如何将数据磁盘附加到新虚拟机 您的应用程序可能需要存储数据.要这样设置,您可以将数据磁盘添加到先前创建的虚拟机.要做到这一点,最简单的方法是将空数据磁盘连接到本机. 在Linux上,磁盘资源通常由Az ...

  8. JRE与JDK

    Java源代码是以*.java的纯文本文件,可以使用任何文本编辑器编写,但不可以执行. JDK是Java语言的开发包,可以将*.java文件编译成可执行Java文件. 可执行Java程序需要JVM才可 ...

  9. 关于iOS socket都在这里了

    socket(套接字)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程 ...

  10. 【一】Swift 3&period;0 新浪微博项目实战 -整体框架搭建

    最近要接手swift,所以找了个视频跟着做一下实战项目,在此记录一下过程和心得 框架搭建和目录拆分 关键词:MVVM 架构,桥接文件 桥接文件用于引入OC的头文件,Swift就可以正常使用(宏除外). ...