繁体   English   中英

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

[英]Save Javascript Value Using C# Async Postback

我有一个名为txt_edit_content的Asp TextBox,其值正在使用JavaScript Wysiwyg txt_edit_content和操纵。 格式化的文本存储在我可以访问的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>

我遇到的问题是,即使在页面上更改了该值,该值也没有发送到服务器。 但是,“文本框之前”值正在发送。 如何从JavaScript中获取价值并在代码中获取价值?

编辑:我可以使用PostBackTrigger而不是“保存”按钮上的AsyncPostBackTrigger来使此代码正常工作。 但是,我需要(想要)在“保存”按钮上使用AsyncPostBackTrigger

使用更新面板,然后在其中包裹一个“隐藏”字段。 然后在您的处理程序中,设置隐藏字段的值。

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的值。

我能够使它工作,而无需使用其他字段或不必向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值存储在文本框中,然后将其隐藏在代码中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM