问题是我需要从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抱歉。 提前谢谢
答案 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>