ASP.Net在UpdatePanel hiddenField上获取ScriptManager.RegisterClie
ASP.Net get ScriptManager.RegisterClientScriptBlock return on UpdatePanel hiddenField
我正试图获得一个Javascript函数的返回,我使用ScriptManager.RegisterClientScriptBlock.在服务器端调用该函数
目前,我的javascript函数将值保存在UpdatePanel中包含的HiddenField中。当我调用该方法时,我运行ScriptManager.RegisterClientScriptBlock,然后获取HiddenField的值,但总是返回上一次调用的值。在这里我显示代码:
我的用户控制ASPX侧:
<script>
var num = 0;
function getReturn() {
num = num + 1;
var hr= document.getElementById('<%= hdf.ClientID %>');
hRetorno.value = num;
}
</script>
...
<asp:UpdatePanel ID="up1" UpdateMode="Conditional" runat="server">
<ContentTemplate>
<asp:HiddenField ID="hdf" runat="server" />
</ContentTemplate>
</asp:UpdatePanel>
我的用户控制服务器端代码:
public String GetReturn()
{
return MyControl.jsGetReturn(this.Page, this.hdf);
}
private static String jsGetReturn(Page page, HiddenField hid)
{
ScriptManager.RegisterStartupScript(page, page.GetType(), "key", "getReturn();", true);
return hid.Value;
}
索引页ASPX侧:
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
<div style="width:720px; height:480px;">
<uc1:MyControl runat="server" id="MyControl1"/>
</div>
<asp:UpdatePanel ID="UpdatePanel1" runat="server" UpdateMode="Conditional">
<ContentTemplate>
<asp:Button ID="btn" runat="server" OnClick="btn_Click" />
<asp:TextBox ID="txt" runat="server" ></asp:TextBox>
</ContentTemplate>
</asp:UpdatePanel>
索引页服务器端代码:
protected void btn_Click(object sender, EventArgs e)
{
txt.Text = MyControl1.GetReturn();
}
不能同时做这些事情。
- 通过
RegisterClientScriptBlock
或RegisterStartupScript
使用javascript从服务器端代码设置隐藏字段的值 - 同时在服务器端代码中检索隐藏的字段值
这是因为,(更改的)隐藏字段值只有在有回发时才可用于服务器端代码,当您从服务器端设置该值时,不会发生回发,这就是为什么您总是得到以前的值,即回发到页面的旧值。
编辑
当您调用RegisterClientScriptBlock
或RegisterStartupScript
时,它不会立即调用JS
,而是根据您使用的内容在<form..
标记之前或之后添加一个javascript call
,它们在文档加载时被调用,这意味着在jsGetReturn
中,当您调用RegisterStartupScript
时,它将在文档加载中设置隐藏字段的值,hid.Value
不会有更新的值,因为它还没有通过文档加载增加。
相关文章:
- 使用 jQuery 的 .on 函数如何获取事件的原始元素
- jquery试图按名称获取按钮位置
- 如何在jQuery中获取元素的形式
- 如何在php文件中获取$.post-ajax传递的值
- 在Shopify中获取博客文章的图片
- 使用Javascript获取所选选项ID
- 在jQuery中获取表的行索引
- 使用jquery将mysql数据获取到新的表行中
- 在动态创建的元素上获取对特定选择器的引用
- 从城市名称获取惊喜
- Angular只从数组中获取所需的数据
- 无法将数据从firebase获取到我的html页面
- 从ajax请求中获取javascript对象
- 如何从画布上的某个移动事件中获取X和Y
- 是否有一个JS/jQuery函数可以获取某个类的每个元素的ID
- 如何在PHP中使用$_POST获取Select元素值
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 从Rally获取一个特定的标记,以便计算另一个字段中的值
- Twitter Bootstrap typeahead:使用“this”获取上下文/调用元素
- ASP.Net在UpdatePanel hiddenField上获取ScriptManager.RegisterClie