我目前正在开发一个页面,该页面(几乎)可以使用CKEditor进行完全内联编辑。因此,在用户完成编辑后,我想获得纯HTML代码,删除编辑器控件,并通过电子邮件发送结果。这将取消WebRequest方法的资格,因为这将"重新加载"页面。有没有一个选项可以从页面中以字符串形式获取CURRENT html?
很可能您必须通过AJAX来实现这一点。将HTML的内容获取到一个JavaScript变量,然后将该变量POST到您的后端(现在您有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变量a,将其吐到后台。
编辑2014年9月11日
我自己也是一个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>
然后创建一个后端处理程序(谷歌提供更多教程),如下所示:
AJAX请求.asgx(是的,只有一行):
<%@ WebHandler Language="C#" CodeBehind="AJAXRequest.ashx.cs" Class="WebApplication1.AJAXRequest" %>
AJAX请求.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;
}
}
}
}
是的,这段代码还没有经过测试,但我想你已经了解了它的要点