ASP.NET在加载或卸载事件中从Javascript填充文本框值

时间:2011-06-07 15:51:36

标签: javascript asp.net web-controls registerstartupscript

简单地说,我在webcontrol中有一个ASP.net文本框 它由webcontrol的相同标记内的javascript函数填充

问题是我需要从webcontrol的服务器端事件中读取该值 试过page_load,page_unload ......但是在javascript函数执行之前它们都会被激活。

我甚至试图将JS代码移动到单独的脚本文件中,并添加了对它的引用。 但它又是一样的。

当我尝试调用该函数来填充文本框时,使用:

Page.ClientScript.RegisterClientScriptBlock //which calls it to early
Page.ClientScript.RegisterStartupScript //which calls it too late ;P

但是在脚本引用包含在控件的渲染中之前,它又被执行了。

除了使用registerClientScriptBlock注册所有JS代码之外的任何建议?

我确定我遗漏了一些与网页控件的生命周期有关的重要内容,所以请赐教并为长篇blablabla抱歉。 提前谢谢

1 个答案:

答案 0 :(得分:0)

正如蒂姆暗示的那样,在输出之前,这可能在服务器上做得更好。

但是,要回答您的问题,您可以创建一个Web服务,客户端可以调用该服务以通知后端计算的值。这是一个非常粗略的例子:

NewWebService.asmx:

[WebMethod(EnableSession = true)]
[ScriptMethod(ResponseFormat = ResponseFormat.Json)]
public void SaveTextBox(string textValue)
{
    <%-- Save the value here --%>
}

YourPage.html:

// Requires jQuery.  
// Code can be refactored to use any library or none at all, if you like

<script>
$("#textBoxId").change(function() {

    var textValue = this.value;

    $.ajax({
        type: "POST",
        url: "NewWebSerivce.asmx/SaveTextBox",
        data: textValue,
        contentType: "application/json; charset=utf-8",
        success: function (data) {
            // do nothing
        }
    });
});
</script>