ASP.NET MVC 4.0 CKEditor jquery 文章管理 图片上传 解决方案
文章修改,新增业务的C#代码
[HttpPost] [ValidateInput(false)] public ActionResult AddNew(FormCollection values) { var db = new ddrDBEntities(); XinWen obj = new XinWen(); if (!string.IsNullOrEmpty(Request["id"])) { var id = Guid.Parse(Request["id"]); obj = db.XinWen.Where(m => m.Id == id).FirstOrDefault(); } else { obj.Id = Guid.NewGuid(); db.XinWen.AddObject(obj); } obj.BiaoTi = values["BT"]; obj.NeiRong = values["NR"]; obj.ShiJian = DateTime.Now; var pics = Request["filesHidden"].Split("#".ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (var pic in pics) { db.TuPian.Where(m => m.LuJing == pic).ToList().ForEach(m => { m.FId = obj.Id; }); } db.SaveChanges(); db.Dispose(); return Redirect("/admin/news/"); }
文章修改,新增业务的cshtml代码
@model ddr.Models.XinWen @{ ViewBag.Title = "德迪尔电器有限公司-后台管理-新闻"; Layout = "~/Views/Shared/_AdminLayout.cshtml"; } <script type="text/javascript" src="/CONTENT/CK/ckeditor.js"></script> <script type="text/javascript" src="/CONTENT/CK/adapters/jquery.js"></script> <script> var g_blnCheckUnload = false; function BypassCheck() { g_blnCheckUnload = true; } window.onbeforeunload = function () { if (g_blnCheckUnload) return ("确认离开当前页面吗?未保存的数据将会丢失!"); } $(function () { var config = { height: 500 }; $('.ckeditor1').ckeditor(config); var pics = '@ViewBag.Pics'; if(pics.length>0){ $("#filesHidden").val(pics); setText(); } }); function valChange(fn) { var val = $("#filesHidden").val(); $("#filesHidden").val(val + "#" + fn); var v = $(".ckeditor1").val(); $(".ckeditor1").val(v + "<img src='/content/wj/" + fn + "' style='border:0px;' />"); setText(); } function setText() { $("#files").empty(); var arr = $("#filesHidden").val().split('#'); var str = ''; for (var i = 0; i < arr.length; i++) { if (arr[i].length > 0) { str += "<div class=" + arr[i] + "><a href='/content/wj/" + arr[i] + "' target='_blank'>" + arr[i] + "</a> "; str += "<a href=\"javascript:delfile(\'" + arr[i] + "\');\">删除该图片</a></div>"; } } $("#files").append(str); } function delfile(p) { g_blnCheckUnload = false; $.getJSON("/file/delfile/?fn=" + p, function (data) { if (data["flag"] == true) { var val = $("#filesHidden").val(); $("#filesHidden").val(val.replace('#' + p, "")); var v = $(".ckeditor1").val(); $(".ckeditor1").val(v.replace('<img src="/content/wj/' + p + '" style="border:0px;" />', "")); setText(); } }); } </script> <div style="margin-right: 60px; margin-left: 60px; text-align: left;"> <form action="/admin/addnew/?id=@Request["id"]" method="post"> <input type="text" name="BT" style="width: 100%;" value="@(Model == null ? "" : Model.BiaoTi)" /><br /> <div id="files"> </div> <input type="hidden" name="filesHidden" id="filesHidden" /> <iframe src="/file/" style="height:30px; border:0px;" frameborder="0" width="100%"></iframe> <textarea class="ckeditor1" name="NR"> @(Model == null ? "" : Model.NeiRong) </textarea> <div style="text-align: center;"> <input onclick="BypassCheck; return true;" type="submit" value="提交" style="width: 120px;" /> <input type="reset" value="重置" style="width: 120px;" /> </div> </form> </div>
图片上传IFRAME的C#代码
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Web.Mvc; using System.IO; using ddr.Models; namespace ddr.Controllers { public class FileController : Controller { // // GET: /File/ public ActionResult Index() { return View(); } [HttpPost] public ActionResult AddFile(HttpPostedFileBase wj) { string sn = string.Empty; if (wj != null) { if (wj.ContentLength > 0) { sn = wj .FileName .Insert(wj.FileName.LastIndexOf('.'), "-"+DateTime.Now.ToString("yyyyMMddhhmmss")); sn = Path.Combine(Server.MapPath("/Content/WJ"), sn); wj.SaveAs(sn); var db = new ddrDBEntities(); var obj = new TuPian(); obj.Id = Guid.NewGuid(); obj.LuJing = Path.GetFileName(sn); db.TuPian.AddObject(obj); db.SaveChanges(); db.Dispose(); } } return Redirect("/file/?fn=" + Path.GetFileName(sn)); } public JsonResult DelFile() { var fn = Request["fn"]; if (!string.IsNullOrEmpty(fn)) { var db = new ddrDBEntities(); var obj = db.TuPian.Where(m => m.LuJing == fn).FirstOrDefault(); db.TuPian.DeleteObject(obj); db.SaveChanges(); db.Dispose(); fn = Path.Combine(Server.MapPath("/Content/WJ"), fn); var fi = new FileInfo(fn); fi.Delete(); } var result = new JsonResult(); result.JsonRequestBehavior = JsonRequestBehavior.AllowGet; result.Data = new { flag = true }; return result; } } }
图片上传IFRAME的cshtml代码
@{ Layout = null; } <!DOCTYPE html> <html> <head> <title>德迪尔电器</title> <script src="@Url.Content("~/Scripts/jquery-1.4.4.min.js")" type="text/javascript"></script> <script> $(function () { var fn = '@(Request["fn"])'; if (fn.length > 0) { parent.valChange(fn); } }); </script> </head> <body style="margin: 0px; padding: 0px; background: #e8e8e8; border: 0px;"> <form method="post" action="/file/AddFile/" enctype="multipart/form-data"> <input type="file" name="wj" /> <input type="submit" value="上传" /> </form> </body> </html>