我目前正在使用CKEditor开发一个(几乎)完全内联可编辑的页面。因此,在用户完成编辑后,我想获得纯HTML代码,删除编辑器控件并通过eMail发送结果。这取消了WebRequest-Method的资格,因为这会重新加载"这页纸。是否有选项可以从字符串中的页面获取CURRENT html?
答案 0 :(得分:0)
很可能你必须通过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变量,将其呕吐到后端。
编辑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;
}
}
}
}
是的,这段代码是非常未经测试的,但我认为你得到了它的要点。