0

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

问题是我需要从尝试 page_load、page_unload 的 web 控件的服务器端事件中读取该值...但它们都在执行 javascript 函数之前触发。

我什至尝试将 JS 代码移动到单独的脚本文件中,并添加了对它的引用。但同样如此。

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

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

但它再次在脚本引用包含在控件的呈现中之前执行。

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

我确定我错过了一些与 Web 控件的生命周期相关的重要内容,所以请赐教,并为冗长的 blablabla 感到抱歉。提前致谢

4

1 回答 1

0

正如 Tim 暗示的那样,这可能最好在输出之前在服务器上完成。

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

新WebService.asmx:

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

你的页面.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>
于 2011-06-07T17:22:43.763 回答