放在 ContentTemplate 内部的按钮点击后整个页面会提交

小灰狼 2010-04-30 07:13:46
看下面的 aspx 页面,如果把一个 tr 元素紧接着放到ContentTemplate后面,则里面的按钮点击后,会刷新整个页面

而如果把 <asp:UpdatePanel> 元素放到 td 元素里面,则不会刷新整个页面

这是怎么回事?



<%@ Page Language="C#" AutoEventWireup="true" CodeFile="ValidGroup.aspx.cs" Inherits="ValidGroup" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<script type="text/C#" runat="server">
protected void btnTest_Click(object sender, EventArgs e) {
txtMyName.Text = txt1.Text;
}
</script>
</head>
<body>
<form id="form1" runat="server">
<asp:ScriptManager ID="sm1" runat="server">
</asp:ScriptManager>
<asp:Button ID="btn1" runat="server" Text="验证Name" ValidationGroup="Name" />
<asp:Button ID="btn2" runat="server" Text="验证Work" />
<table width="400px" border="1">
<tr>
<td>姓名</td>
<td>
<asp:TextBox ID="txt1" runat="server" Text="AAA" />
<asp:RequiredFieldValidator ID="rfvTxt1" runat="server"
ControlToValidate="txt1" Display="Dynamic" Text="姓名不能为空" ValidationGroup="Name" />
</td>
</tr>
<tr>
<td>地址</td>
<td>
<asp:TextBox ID="txt2" runat="server" Text="BBB" />
<asp:RequiredFieldValidator ID="rfvTxt2" runat="server"
ControlToValidate="txt2" Display="Dynamic" Text="地址不能为空" ValidationGroup="Name" />
</td>
</tr>
<tr>
<td>工作</td>
<td>
<asp:TextBox ID="txt3" runat="server" Text="CCC" />
<asp:RequiredFieldValidator ID="rfvTxt3" runat="server"
ControlToValidate="txt3" Display="Dynamic" Text="工作单位不能为空" ValidationGroup="Name" />
</td>
</tr>
<asp:UpdatePanel ID="up1" runat="server">
<ContentTemplate>
<tr>
<td>我的姓名</td>
<td>
<asp:TextBox ID="txtMyName" runat="server" />
<asp:Button ID="btnTest" runat="server" Text="Test" onclick="btnTest_Click" />
</td>
</tr>
</ContentTemplate>
</asp:UpdatePanel>
</table>
<asp:Button ID="btnTest1" Text="AAAAA" runat="server" ValidationGroup="Name" />

</form>
</body>
</html>
...全文
306 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
wuyq11 2010-05-04
  • 打赏
  • 举报
回复
局部刷新
<asp:UpdatePanel ID="UpdatePanel1" runat="server">
<ContentTemplate>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
<asp:Button ID="Button1" runat="server" onclick="Button1_Click" Text="Button" />
<asp:Label ID="Label2" runat="server" Text="Label"></asp:Label>
</ContentTemplate>
</asp:UpdatePanel>


jshi123 2010-05-04
  • 打赏
  • 举报
回复
把updatepanel放到整个table的外面
小灰狼 2010-05-04
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 jshi123 的回复:]
updatepanel会在页面上生成div标签,所以你的html源码看上去是这样的
<table>
<tr>..</tr>
<div id="up1">
...
</div>
</table>
这不是一个合法的table表结构,所以不会正常更新
[/Quote]

那应该怎么办呢?
微工程 2010-04-30
  • 打赏
  • 举报
回复
<table>
<tr>..</tr>
<div id="up1">
...
</div>
</table>

表结构,所以不会正常更新
jshi123 2010-04-30
  • 打赏
  • 举报
回复
updatepanel会在页面上生成div标签,所以你的html源码看上去是这样的
<table>
<tr>..</tr>
<div id="up1">
...
</div>
</table>
这不是一个合法的table表结构,所以不会正常更新
yufenghua 2010-04-30
  • 打赏
  • 举报
回复
如果把一个 tr 元素紧接着放到ContentTemplate后面???
nosuchtracter 2010-04-30
  • 打赏
  • 举报
回复
因为你把它的兼容格式给截掉了??
<tr>里面好像只能放td吧??

62,046

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧