C#中富文本编辑器Simditor带图片上传的全部过程(MVC架构的项目)

时间:2023-12-19 12:39:56

描述:最近c#项目中使用富文本编辑器Simditor,记录一下以便以后查看。

注:此项目是MVC架构的。

1.引用文件

项目中引用相应的css和js文件,注意顺序不能打乱,否则富文本编辑器不会正常显示。

    <link rel="stylesheet" type="text/css" href="../styles/simditor.css" />
<script type="text/javascript" src="../scripts/jquery.min.js"></script>
<script type="text/javascript" src="../scripts/simditor/module.js"></script>
<script type="text/javascript" src="../scripts/simditor/hotkeys.js"></script>
<script type="text/javascript" src="../scripts/simditor/uploader.js"></script>
<script type="text/javascript" src="../scripts/simditor/simditor.js"></script>

2.HTML中富文本的定义

<div >
<h5>故障描述:</h5>
<div class="view">
<textarea id="Describe"></textarea>
</div>
</div>

3.初始化富文本

注意的参数:

textarea: $('#Describe'), //对应的html中富文本的ID。
url: '../../WebManage/WebNews/UploadPic', //对应的服务器的地址。(对应Controller中的Action)
params: null, //以键值对的方式,传递给后台的参数,若无填写null即可
fileKey: 'fileDataFileName',  //服务器获取文件数据的参数名
<script type="text/javascript">
var editor1;
  $(document).ready(function () {
  editor1 = new Simditor({
  textarea: $('#Describe'),
  placeholder: '这里输入图文内容...',
  pasteImage: true,
  toolbar: ['title', 'fontScale', 'alignment', 'bold', 'italic', 'underline', 'strikethrough', 'color', '|',
           'ol', 'ul', 'blockquote', 'code', 'table', '|', 'link', 'image', 'hr', '|', 'indent', 'outdent'],
upload: {
  url: '../../WebManage/WebNews/UploadPic', //文件上传的接口地址
params: null, //键值对,指定文件上传接口的额外参数,上传的时候随文件一起提交
  fileKey: 'fileDataFileName', //服务器端获取文件数据的参数名
  connectionCount: 3,
  leaveConfirm: '正在上传文件'
  }
  });
});
</script>

4.页面效果

页面中有“上传图片”和“外链图片”两个按钮供选择。

C#中富文本编辑器Simditor带图片上传的全部过程(MVC架构的项目)

5.C#后台保存图片代码

后台图片的保存代码,["fileDataFileName"]就是上面"3"中的fileKey

        /// <summary>
/// 编辑器提交图片
/// </summary>
/// <returns></returns>
public ActionResult UploadPic()
{
HttpPostedFileBase file = Request.Files["fileDataFileName"];
if (file != null)
{
//生成路径
string path = OperatorProvider.Provider.Current().Account + "_" + Util.Time.Now.Year
+ Util.Time.Now.Month.ToString("D2")
+ Util.Time.Now.Day.ToString("D2");
string strPath = HttpContext.Server.MapPath(string.Format("/Resource/Upload/{0}/", path));
if (!Directory.Exists(strPath))
{
Directory.CreateDirectory(strPath);
}
string filePath = Path.Combine(strPath, Path.GetFileName(file.FileName));

          //保存图片
file.SaveAs(filePath);
return Success("上传成功!");
}
else
{
return Success("上传失败!");
}
}

6.Html前端页面的"保存"代码

前端页面获取数据用getValue即可。

        var postData = {
//...
describe: editor1.getValue()
}
$.SaveForm({
url: "../../WebManage/WebNews/SaveForm?keyValue=" + keyValue,
param: postData,
loading: "正在保存数据...",
success: function () {
$.currentIframe().$("#gridTable").trigger("reloadGrid");
}
});

7.c#后端"保存"按钮

[ValidateInput(false)]必须加上,否则会提示:从客户端(*****)中检测到有潜在危险的......

        /// <summary>
/// 保存新闻表单(新增、修改)
/// </summary>
/// <param name="keyValue">主键值</param>
/// <param name="newsEntity">新闻实体</param>
/// <returns></returns>
[HttpPost]
[AjaxOnly]
[ValidateInput(false)]
public ActionResult SaveForm(string keyValue, WebNewsEntity newsEntity)
{
newsBLL.SaveForm(keyValue, newsEntity);
return Success("操作成功。");
}

8.页面展示富文本保存的数据

前端页面展示用setValue 即可正常展示。

  editor1.setValue(data.describe);

以上是使用富文本编辑器Simditor在C#中带图片上传的全部过程(是MVC架构的项目)。

仅供参考,如有问题,望指出。