将HTML从CURRENT aspx页面转换为字符串值(代码隐藏)



我目前正在开发一个页面,该页面(几乎)可以使用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;
            }
        }
    }
}

是的,这段代码还没有经过测试,但我想你已经了解了它的要点

最新更新