C# 在C中使用带有母版页的UpdatePanel时出现问题#
我的代码:C# 在C中使用带有母版页的UpdatePanel时出现问题#,c#,asp.net,updatepanel,master-pages,postback,C#,Asp.net,Updatepanel,Master Pages,Postback,我的代码: <%@ Page Language="C#" %> <script runat="server"> void button_Click(object sender, EventArgs e) { label.Text = "Refreshed by server side event handler at " + DateTime.Now + ".<br>Value provided:" + text.Text;
<%@ Page Language="C#" %>
<script runat="server">
void button_Click(object sender, EventArgs e)
{
label.Text = "Refreshed by server side event handler at " + DateTime.Now + ".<br>Value provided:" + text.Text;
}
</script>
<html>
<head>
<title>How to update an UpdatePanel with JavaScript</title>
<script type="text/javascript">
function UpdPanelUpdate(id) {
var obj = document.getElementById("<%= text.ClientID %>");
obj.value = id;
__doPostBack("<%= button.ClientID %>", "");
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="ScriptManager1" runat="server" />
<div>
<a href="javascript:UpdPanelUpdate('Value passed by javascript')">Update the Panel</a>
<asp:TextBox ID="text" runat="server" Style="display: none;"></asp:TextBox>
<asp:Button ID="button" runat="server" OnClick="button_Click" Style="display: none;" />
<asp:UpdatePanel runat="server" ID="UpdatePanel1" UpdateMode="Conditional" ChildrenAsTriggers="false">
<contenttemplate>
<asp:Label ID="label" runat="server"></asp:Label>
</contenttemplate>
<triggers>
<asp:AsyncPostBackTrigger ControlID="button" EventName="Click" />
</triggers>
</asp:UpdatePanel>
</div>
</form>
</body>
</html>
无效按钮\单击(对象发送者,事件参数e)
{
label.Text=“由服务器端事件处理程序在“+DateTime.Now+”刷新
提供的值:”+Text.Text;
}
如何使用JavaScript更新UpdatePanel
函数UpdPanelUpdate(id){
var obj=document.getElementById(“”);
obj.value=id;
__doPostBack(“,”);
}
这很好用,但当我把它与母版页一起使用时,链接似乎不起作用。。。没有错误,但什么也没发生
有什么想法吗
谢谢 您是否确保ScriptManager正确包含在母版页上?你可能会发现这个链接很有用 在JavaScript中,尝试使用UniqueID而不是ClientID:
function UpdPanelUpdate(id) {
var obj = document.getElementById("<%= text.UniqueID%>");
obj.value = id;
__doPostBack("<%= button.UniqueID%>", "");
}
函数UpdPanelUpdate(id){
var obj=document.getElementById(“”);
obj.value=id;
__doPostBack(“,”);
}
让我知道这是否有效
我怀疑现在的情况是,文本框ID不再是您所期望的。ID最初是“文本”,但一旦将该页面移动到母版页,情况就会发生变化。由于控件现在包含在母版页中,因此它们的ID会有效地更改以显示这种关系。因此,文本框的ID不再是“text”,而是类似于ctl00$cphBody$text,其中“ctl100”是母版页的ID前缀,“cphBody”是分别分配给该页的ContentPlaceholder ID的值
当然,您可以从后面的代码执行此操作。text.text=“new value”并直接访问它。那很好。但是尝试使用FindControl,你会发现事情变得混乱。要真正理解我所描述的内容,最简单的方法是使用母版页在页面上执行以下操作: