使用C#异步回发保存Javascript值

时间:2015-12-07 23:02:42

标签: javascript c# asp.net

我有一个名为txt_edit_content的Asp TextBox,其值使用JavaScript Wysiwyg进行复制和操作。格式化的文本存储在我可以访问的JavaScript变量中:

var data = CKEDITOR.instances.<%=txt_edit_content.ClientID%>.getData();

我尝试做的是将该值发送回服务器。所以,我已经使用Sys.WebForms.PageRequestManager

注册了以下JavaScript函数
function BeginRequestHandler(sender, args) {
    try{
        var data = CKEDITOR.instances.<%=txt_edit_content.ClientID%>.getData();
        console.log("Textbox Before: " + $('#<%=txt_edit_content.ClientID%>').val());
        console.log("    Javascript: " + data);
        $('#<%=txt_edit_content.ClientID%>').val(data);
        console.log(" Textbox After: " + $('#<%=txt_edit_content.ClientID%>').val());
    } catch (err) {
        console.log("Error:" + err.message);
    }
}

并像这样注册:

var prm = Sys.WebForms.PageRequestManager.getInstance();
prm.add_beginRequest(BeginRequestHandler);

POST之前的JavaScript控制台输出如下所示:

Textbox Before: 1234 
    Javascript: <p>1234567</p> 
 Textbox After: <p>1234567</p>

我遇到的问题是该值即使在页面上被更改,也不会被发送到服务器。然而,&#39;文本框之前&#39;价值正在发送。如何从JavaScript和代码中获取价值?

修改 我可以使用PostBackTrigger使用此代码,而不是使用AsyncPostBackTrigger来保存&#39;按钮。但是,我需要(希望)在&#39; Save&#39;上使用AsyncPostBackTrigger。按钮。

2 个答案:

答案 0 :(得分:1)

使用更新面板并在其中包含隐藏字段。然后在你的处理程序中,设置隐藏字段的值。

function BeginRequestHandler(sender, args) {
    try{
        var data = CKEDITOR.instances.<%=txt_edit_content.ClientID%>.getData();
        console.log("Textbox Before: " + $('#<%=txt_edit_content.ClientID%>').val());
        console.log("    Javascript: " + data);
        $('#<%=txt_edit_content.ClientID%>').val(data);
        console.log(" Textbox After: " + $('#<%=txt_edit_content.ClientID%>').val());
        $('#<%=hidValue.ClientID%>').val(data);

    } catch (err) {
        console.log("Error:" + err.message);
    }
}

现在在您的代码中,您可以获得hidValue的值。

答案 1 :(得分:0)

我能够在不使用其他字段或必须向PageRequestManager添加处理程序的情况下使其工作

通过创建以下JavaScript函数

function SaveWysiwig() {
    try{
        var data = CKEDITOR.instances.<%=txt_edit_content.ClientID%>.getData();
        $('#<%=txt_edit_content.ClientID%>').val(data);
    } catch (err) {
        console.log("Error:" + err.message);
    }
}

然后通过我的保存按钮调用它:

<asp:LinkButton ID="savePage" runat="server" Text="Save" OnClientClick="SaveWysiwig();" OnClick="SavePage" />

我能够将JavaScript值存储在我的文本框中,然后使用我的代码隐藏。