.NET MVC和Summernote使用示例

summernote 富文本编辑器 简单实例 summernote 富文本编辑器简介 Summernote 是一个简单,灵活,所见即所得(WYSIWYG)的编辑器,基于 jQuery 和 Bootstrap 构建。Summernote 所有主要的操作都支持快捷键,有一个功能强大的 API,它提供了大量的自定义选项的设计(宽,高,有效的项目等等)和功能。对于主要的脚本语言或框架(PHP,Ruby,Django,NodeJS),该项目有提供了集 阅读详情

Index.cshtml

@{
    ViewBag.Title = "Home Page";
}

<div class="jumbotron">
    <h1>SUMMERNOTE</h1>
    <p class="lead">Summernote是Bootstrap上的超级简单WYSIWYG编辑器。</p>
    <p><a target="_blank" href="http://summernote.org" class="btn btn-primary btn-lg">Learn more &raquo;</a></p>
</div>

<div class="row">
    <div class="col-md-4">
        <h2>Getting started</h2>
        <p>
            Summernote概述,如何下载和使用,基本功能和示例等。
        </p>
        <p>
            <a class="btn btn-default" href="http://summernote.org/getting-started/">Learn more &raquo;</a>
        </p>
    </div>
    <div class="col-md-4">
        <h2>Deep dive</h2>
        <p>自定义summernote的组件,工具栏,插件以获取自己的版本。</p>
        <p>
            <a class="btn btn-default" href="http://summernote.org/deep-dive/">Learn more &raquo;</a>
        </p>
    </div>
    <div class="col-md-4">
        <h2>Examples</h2>
        <p>See all useful features of summernote in action.</p>
        <p>
            <a class="btn btn-default" href="http://summernote.org/examples/">Learn more &raquo;</a>
        </p>
    </div>
</div>

<h2>Summernote示例</h2>

@using (Html.BeginForm())
{
    <div class="row">
        <div class="col-md-12">
            @Html.TextArea("Summernote")
        </div>
        <div class="col-md-12">
            <button class="btn btn-primary" type="submit">Save</button>
        </div>
    </div>
}

<h2>Result after submit</h2>
<div class="row">
    <div class="col-md-12">
        @if (ViewBag.Summernote != null)
        {
            @Html.Raw(ViewBag.Summernote)
        }
    </div>
    <div class="col-md-12">
        <textarea class="form-control">
            @if (ViewBag.Summernote != null)
            {
                @ViewBag.Summernote
            }
        </textarea>
    </div>
</div>

@section scripts {
    <!-- include summernote css/js-->
    <link href="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.1/summernote.css" rel="stylesheet">
    <script src="http://cdnjs.cloudflare.com/ajax/libs/summernote/0.8.1/summernote.js"></script>

    <script>
        $(document).ready(function () {
            
            $('#Summernote').summernote({
                callbacks: {
                    onImageUpload: function (files) {
                        sendFile(files[0]);
                    }
                }
            });

            //上传文件到服务器
            function sendFile(file) {
                var data = new FormData();
                data.append("file", file);
                $.ajax({
                    data: data,
                    type: "POST",
                    // 调用操作:控制器:HomeController中的SummernoteUploadImage
                    url: '@Url.Action("SummernoteUploadImage", "Home")',
                    cache: false,
                    contentType: false,
                    processData: false,
                    success: function (response) {
                        // 上传到服务器后,将图像插入编辑器中的正确位置。
                        $('#Summernote').summernote('insertImage', response.Url, function ($image) {
                            $image.css('width', $image.width());
                        });
                    }
                });
            }
        });
    </script>
}

如果您使用的是Summernote的Boostrap 3或4版本,Summernote使用的是开放源代码库jQuery和Bootstrap,如果使用的是Lite版本,则为jQuery。

_Layout.cshtml

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>@ViewBag.Title - My ASP.NET Application</title>
    @Styles.Render("~/Content/css")
    @Scripts.Render("~/bundles/modernizr")

</head>
<body>
    <div class="navbar navbar-inverse navbar-fixed-top">
        <div class="container">
            <div class="navbar-header">
                <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                    <span class="icon-bar"></span>
                </button>
            </div>
            
        </div>
    </div>
    <div class="container body-content">
        @RenderBody()
        <hr />
        <footer>
            <p>&copy; @DateTime.Now.Year</a></p>
        </footer>
    </div>

    @Scripts.Render("~/bundles/jquery")
    @Scripts.Render("~/bundles/bootstrap")
    @RenderSection("scripts", required: false)
</body>
</html>

HomeController.cs

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Web;
using System.Web.Mvc;

namespace SummernoteExample.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            return View();
        }

        [HttpPost]
        [ValidateInput(false)]
        public ActionResult Index(string summernote)
        {
            ViewBag.Summernote = summernote;
            return View();
        }


        public ActionResult About()
        {
            ViewBag.Message = "";

            return View();
        }

        public ActionResult Contact()
        {
            ViewBag.Message = "";

            return View();
        }

        #region SUMMERNOTE上传图片

        [HttpPost]
        public ActionResult SummernoteUploadImage()
        {
            foreach (var fileKey in Request.Files.AllKeys)
            {
                var file = Request.Files[fileKey];
                try
                {
                    var fileName = Path.GetFileName(file?.FileName);
                    if (fileName != null)
                    {
                        var path = Server.MapPath("~/Uploads/SummernoteImages");
                        if (System.IO.File.Exists(path) == false)
                        {
                            Directory.CreateDirectory(path);
                        }

                        path = Path.Combine(Server.MapPath("~/Uploads/SummernoteImages"), fileName);
                        file.SaveAs(path);
                        return Json(new { Url = Url.Content("~/Uploads/SummernoteImages/" + fileName) });
                    }
                }
                catch (Exception ex)
                {
                    return Json(new { Message = $"Error in saving file ({ex.Message})" });
                }
            }
            return Json(new { Message = "File saved" });
        }

        #endregion
    }
}

结果如图

在这里插入图片描述

在这里插入图片描述

1.实现简单的增删改查(Asp.Net MVC+Layui) 实现简单的增删改查(Asp.Net MVC+Layui) 阅读详情

相关推荐

Summernote富文本编辑器:实战详解与应用

富文本编辑器(Rich Text Editor, RTE)是一种允许用户在网页上输入和编辑富文本内容的Web组件。与传统的文本输入框不同,富文本编辑器提供类似桌面文本处理软件(如Microsoft Word)的体验,支持文本格式化、图片插入、表格创建等高级功能。随着Web应用的发展,富文本编辑器已成为众多网站和在线服务不可或缺的一部分,广泛应用于博客平台、论坛、内容管理系统(CMS)和电子邮件客户端等。它极大地提高了用户交互的便捷性和内容创建的效率。

weixin_31486261的博客 1176

Summernote文字编辑器添加代码插入功能

经过两天的改造,目前Summernote终于可以支持代码插入了。 summernote.js文件奉上 /** * Super simple wysiwyg editor v0.8.10 * https://summernote.org * * Copyright 2013- Alan Hong. and other contributors * summernote may be ...

安迪夫的博客 6635

Summernote插件使用案例(asp.net)

最近需要使用一个富文本插件,几番寻找后,选择了Summernote。但是网上介绍文档虽然多,基于ASP.NET的可下载案例很少。自己做好后,觉得可能会有网友也遇到类似情况,特分享一个案例在这里。本案例只包括插件使用,图片上传和放入富文本框。关键地方都有注释,希望能帮助到一些朋友。

Layui框架Summernote富文本编辑器使用

Layui框架Summernote富文本编辑器使用

m0_65607651的博客 1667

最牛Summernote高级文本编辑器Asp.net应用

再次封装 asp.net代码Summernote高级文本编辑器

富文本-summernote的一个简单demo

亲测好使的一个富文本编辑器的demo

Summernote使用入门

Create.cshtml @model SN.Models.ProductModel @{ ViewBag.Title = "产品立项"; Layout = "../Shared/_LayoutAdminLTE.cshtml"; } <head> <!--summernote--> <link href="~/Content/summernote/summernote.css" rel="stylesheet" /> <

极客神殿 3256

jQuery+Bootstarp富文本编辑器插件summernote.js.zip

有兴趣刚需的可以自己下载,非常实用的特效代码,可以完美运行,有能力的还可以二次修改!

bootstrap插件summernote 编辑器 的使用

@{ ViewBag.Title = "Index"; Layout = "~/Views/Shared/_Layout.cshtml"; }<script src="~/js/jquery-3.1.1.min.js"></script> <script src="~/lib/bootstrap/js/bootstrap.min.js"></script> <script src="

ZhuangLiang 1036

从零开始STM32cubeide学习

使用的是正点原子的精英版,单片机是STM32F103ZET6,详细讲解完成跑马灯实验

weixin_44077208的博客 2277

DOORS需求管理实战:从汽车设计案例看模块化需求拆分技巧

本文通过一个汽车设计实战案例,深入解析了如何利用DOORS进行模块化需求拆分与管理。从捕获原始用户需求到精炼为可追踪的系统需求,再到按子系统(如自动驾驶)进行模块化拆分,文章详细展示了构建需求骨架、建立可追溯性以及实施变更控制的完整流程,帮助团队在复杂系统工程中实现从混沌到秩序的高效协同。

ww90123的博客 242

asp .net mvc实现 富文本框

可以使用在发布文章时使用 与多行文本域不同的是 ,可以上传设定好的字体颜色 html样式

qq_58734875的博客 680

抖音Web端私信Protobuf逆向解析实战

本文详细解析了抖音Web端私信通信的逆向过程,发现其核心采用WebSocket传输Protobuf序列化数据。通过抓包获取二进制样本,利用protoc工具进行原始解码,并逐步推导和编写出对应的.proto协议定义文件,最终实现模拟消息的编码与解码,为理解私有协议逆向提供了完整实战案例。

water的专栏 760

基于Metronic的Bootstrap开发框架经验总结(17)-- 使用 summernote插件实现HTML文档的编辑和图片插入操作...

在很多场合,我们需要在线编辑HTML内容,然后在页面上或者其他终端上(如小程序、APP应用等)显示,编辑HTML内容的插件有很多,本篇介绍基于Bootstrap的summernote插件实现HTML文档的编辑和图片插入操作,这个控件的使用非常方便,并且用户群也很大。 Summernote 是一个简单灵活,所见即所得(WYSIWYG)的编辑器,Summe...

weixin_33847182的博客 226

PCB光绘文件DFM检查:从Gerber验证到制造闭环

Gerber文件是PCB设计交付制造的核心数据载体,其准确性直接决定硬件可制造性与量产良率。理解Gerber格式规范、IPC网表比对原理及DFM(Design for Manufacturability)自动检测逻辑,是电子工程师保障设计落地的关键能力。通过电气连通性验证、物理DRC规则扫描与工艺兼容性分析,DFM工具能提前识别开路、短路、孔环不足、阻焊异常等典型问题,避免投板后返工甚至批量报废。在国产化替代趋势下,华秋DFM等平台已深度适配Altium Designer工作流,支持一键导入、智能报告与协同

weixin_42620563的博客 507

VHDL六层电梯控制器及仿真

六层电梯电梯 设计要求:设计一个六层电梯控制系统要求有超载、关门中断、提前关门清除报警信电梯外人的上升请求信号,电梯外人的下降请求信号, 电梯外人上升请求信号显示电梯外人下降请求信号显示到达楼层信号 设计思路:输入有clk时钟信号(频率为2Hz) full,deng,quick,clr超载、关门中断、提前关门清除报警c_u1,c_u2,c_u3,c_u4,c_u5电梯外人的上升请求c_d2,c_d3,c_d4,c_d5,c_d6 电梯外人的下降请求 d1,d2,d3,d4,d5,d6电梯内人的...

QQ_778132974的博客 1706

ASP.NET MVC中使用FCK 富文本篇辑器

asp.net  页面引用FCK JS 和jquery .js View调用     @Html.FckText("Content2", Model.Content2) 后台扩展方法 public static MvcHtmlString FckText(this System.Web.Mvc.HtmlHelper helper, string name,

jhl52771的专栏 862

如何使用 ESP32 CAM 进行自动车牌识别 (ANPR)

用于提取 JSON 值并在 OLED 上显示文本的函数。有一个可用的函数,即 extractJsonStringValue 来提取字符串值。它是独立函数,但您仍然可以使用一些 JSON 库来执行相同的功能。

jkh920184196的博客 1303

ASP.NET MVC使用Bootstrap系列(4)——使用JavaScript插件

序言 Bootstrap的JavaScript插件是以JQuery为基础,提供了全新的功能并且还可以扩展现有的Bootstrap组件。通过添加data attribute(data 属性)可以轻松的使用这些插件,当然你也可以使用编程方式的API来使用。 为了使用Bootstrap插件,我们需要添加Bootstrap.js或者Bootstrap.min.js文件到项目中。这两个文件包含了所有...

weixin_34344677的博客 198

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

2025年全国青少年信息素养大赛初赛真题(算法创意实践挑战赛C++初中组:文末附答案)

王老师青少年编程 3390

【unity】【WebRTC】从0开始创建一个Unity远程媒体流app-构建可同步场景

本文介绍了如何利用Unity和WebRTC技术实现远程画面传输。通过配置Render Streaming组件、设置信令管理器和视频流发送器,构建了一个可同步的Unity场景。文中详细说明了从场景搭建到浏览器端测试的完整流程,并提供了常见问题排查方法。该方案适用于远程调试、云游戏、VR共享等场景,具有低延迟、高兼容性等特点。文章还包含项目源码下载链接,方便读者实践操作。最终实现了Unity端到浏览器端的实时画面传输,为后续实现双向互动奠定了基础。

每日出拳老爷子的博客 1840

dotnetClub 的前世今生

三年之前,我做过一个在线调查,当时有不少人还是对一个在线社区表示出期待。.NET Core 技术正风声水起,所以我就开始了用它来开发一个论坛的计划。最近正式将项目推动到了...

dotNET跨平台 743

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

一个简约漂亮的富文本编辑器-summernote

https://blog.csdn.net/timsqin/article/details/80534669 首先是引入: &lt;link href="~/Content/summernote/dist/summernote.css" rel="stylesheet" /&gt;   &lt;script src="~/Content/summernote/dist/summernote....

NRGAGA的专栏 1165

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Fastadmin富文本编辑器(summernote)使用示例

这一步主要透过jq处理富文本编辑器的值(有规律的,每一行元素都包含在一对p标签里),再通过模板字符串添加渲染效果,最后生成预览效果。安装完成后,可在项目根目录下的addons文件夹找到对应插件文件。前往fastadmin后台插件管理安装即可,插件免费,不过需要注册fastadmin官方账号。js部分:插件内置的事件名为’summernote.change’,不是’change’;注:editor类名可在后台插件配置项处更改,此处不展示。第二种:嵌套在form标签里,数据绑定为通过事件触发。

weixin_46522160的博客 4732

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

summernote文本编辑内容在前端的显示

1.summernote文本的编辑与文件的上传   在上一篇文章中,我们写了summernote文本编辑器的使用还有图片文件的上传,http://www.cnblogs.com/jingmin/p/6592325.html       2.summernote编辑内容在前端的显示   summernote编辑器编辑的内容保存的时候是带有html标签的,那么小编在这里总结了两种方法,把这些内容在前端

小King哥的博客 6483
上一篇: NPOI介绍
下一篇: Summernote使用入门
.NET跨平台
博客等级 码龄15年 6066粉丝 738原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值