【发布时间】:2014-09-10 09:06:54
【问题描述】:
我目前正在开发一个(几乎)可以使用 CKEditor 完全内联编辑的页面。因此,在用户完成编辑后,我想获取纯 HTML 代码,删除编辑器控件并通过电子邮件发送结果。这会取消 WebRequest-Method 的资格,因为这会“重新加载”页面。是否可以选择从字符串中的页面获取当前 html?
【问题讨论】:
标签: asp.net html c#-4.0 ckeditor
我目前正在开发一个(几乎)可以使用 CKEditor 完全内联编辑的页面。因此,在用户完成编辑后,我想获取纯 HTML 代码,删除编辑器控件并通过电子邮件发送结果。这会取消 WebRequest-Method 的资格,因为这会“重新加载”页面。是否可以选择从字符串中的页面获取当前 html?
【问题讨论】:
标签: asp.net html c#-4.0 ckeditor
您很可能必须通过 AJAX 执行此操作。将 HTML 的内容获取到一个 JavaScript 变量,然后将该变量发布到您的后端(您现在拥有 WebRequest)。如果您使用 jQuery,请尝试这样的操作:
var markup = document.documentElement.innerHTML;
alert("Submitting: " + markup"); // big alert...
$.ajax({
type: "POST",
url: "path/to/HTML_handler.aspx",
data: { html: markup }
})
.done(function(msg) {
alert("Data Saved: " + msg);
});
然后在您的后端读取发布的 html 变量并将其吐到后端。
编辑 11.9.2014
我自己是 MVC 人,但我认为经典的 ASP.net 执行此操作的方式是这样的:在您的 aspx 视图中,添加一个按钮,例如:<button id="Derp">I love ponies</button>。添加对 jQUery 的引用:<script src="http://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>(我在这里使用的是 Google CDN)。然后给按钮绑定一个点击事件:
<script type="text/javascript">
$(function() {
var btn = $('#Derp');
btn.click(function() {
var markup = document.documentElement.innerHTML;
alert("Submitting...");
$.ajax({
type: "POST",
url: "AJAXRequest.ashx", // Important that this points to the right file...
data: { html: markup }
})
.done(function(msg) {
alert("Data Saved: " + msg);
});
});
});
</script>
然后创建一个后端处理程序(Google 获取更多教程),如下所示:
AJAXRequest.asgx(是的,只有一行):
<%@ WebHandler Language="C#" CodeBehind="AJAXRequest.ashx.cs" Class="WebApplication1.AJAXRequest" %>
AJAXRequest.ashx.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Script.Serialization;
namespace WebApplication1
{
public class AJAXRequest : IHttpHandler
{
public void ProcessRequest(HttpContext context)
{
// Not sure which one to use here, try both
string html1 = context.Request["html"];
string html2 = context.Request.Form["html"];
// Do whatever you want with the html...
context.Response.Write("OMG I just found: " + html1);
}
public bool IsReusable
{
get
{
return false;
}
}
}
}
是的,这段代码未经测试,但我想你明白了它的要点。
【讨论】:
The directive 'webhandler' is unknown. 我错过了什么吗?谷歌研究不提供解决方案。再次感谢,对不起我的愚蠢