关于获取网页提交的内容

Prairial_0 2011-12-04 04:01:42
前端大概是这样
<script type="text/javascript" language="javascript">
function append_child(listID) {
var list = document.getElementById(listID);
var li = document.createElement("li");
li.innerHTML = '<div>hello world</div>';
list.appendChild(li);
}
</script>
<ul id="list" runat="server"></ul>
<input type="button" onclick="append_child('<%=list.ClientID %>');" value="添加" /><br />
<asp:Button ID="Button1" runat="server" Text="确认提交" onclick="Button1_Click" />

多点几下"添加"按钮,浏览器端正常工作,但提交后在Button1_Click方法内,list对应的innerHTML却是"",求解
...全文
167 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
sorry!没有注意第一个写了runat="server"。


那么这应该被asp.net解析为三个服务器控件,第一个大概是一个 HtmlGenericControl 类型的控件,然后是一个 LiteralControl 控件,然后是一个Button控件。

asp.net要多设计页面上每一行都解析为服务器控件,然后才进行页面操作,例如Render而输出html。其中对于你随便写字符串,例如就算你把 <input ....>胡乱写成了<inputa ....>它也在LiteralControl控件中原样输出,当作普通的字符串处理。这种东西没有什么内涵,你也别想着像其它服务器控件一样有让你编程省事的(例如可以得到InnerXXXX属性的)设计内涵。
  • 打赏
  • 举报
回复
当你写
<ul id="list" runat="server"></ul>
<input type="button" onclick="append_child('<%=list.ClientID %>');" value="添加" /><br />
<asp:Button ID="Button1" runat="server" Text="确认提交" onclick="Button1_Click" />

前两行被asp.net解析为服务器控件LiteralControl,其Text属性是这两行字符串。然后第三行被解析为Button控件。

也就是说这是两个服务器控件。其中第一个只是字符串而已,就算你胡乱写也一样。有些人把这叫做什么“html控件”,他是分不清楚什么是浏览器端html标签,什么是服务器控件,说了一个四不像的概念。
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 prairial_0 的回复:]
不是很明白,比如<textarea runat="server" id="ta"></textarea>
提交后服务器端ta的内容就变了
如果要改的话,应该怎么办呢[/Quote]

这是服务器控件 HtmlTextArea。你可以看看msdn,知道这是什么。
Prairial_0 2011-12-04
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 net_lover 的回复:]
li标记不是表单控件,是不会发送到服务器端的。
你必须放在隐藏表单控件如<input type=hidden name=x>里面才能提交到服务器端
[/Quote]

不是很明白,比如<textarea runat="server" id="ta"></textarea>
提交后服务器端ta的内容就变了
如果要改的话,应该怎么办呢
孟子E章 2011-12-04
  • 打赏
  • 举报
回复
li标记不是表单控件,是不会发送到服务器端的。
你必须放在隐藏表单控件如<input type=hidden name=x>里面才能提交到服务器端

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

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