我注意到C#中存在一个奇怪的问题,它已经困扰了我好几个星期,所以我想我只是把这个问题放在那里。所以我的问题基本上是C#如何在服务器表单<form>
内处理多个客户端<form runat="server">
?我一直在写一个网站,我遇到了一个非常奇怪的问题。
所以这是重现这个问题的基本细分。
1)有一个简单的javascript方法,如果调用它,则会触发内部警告。
eg: function tester() {
alert("adf");
}
2)在Visual Studios 2010中打开一个全新的Web窗体项目。(它内部已经创建了<form runat="server">
。)
eg: <form runat="server"> <form/>
You can only have one of these.
3)现在在这个表单标签内,写一个理论上什么都不做的空表单标签:
eg: <form action=""><form/>
4)现在在调用javascript方法的表单后面创建另一个表单。
eg: <form action="javascript:tester()" >
<button type="submit" >Search</button>
</form>
5)现在运行此代码,按下按钮后会看到警告弹出。
6)现在取出空表格标签:
删除:<form action=""><form/>
7)再次运行代码,现在你应该发现你的javascript调用不再被触发了,而且每次按下按钮都会刷新页面。
所以这是我一直困扰着我的问题,我希望有些大师可能很快就能得到答案,因为这一直困扰着我很久。我不知道为什么它适用于两种形式,为什么它不只有一种形式。希望有人能尽快回答这个问题。非常感谢提前!!!
一些有用的信息:
根据这个页面,我可以有多个“基于客户端”的表单标签,这应该不是问题......
Why you can't have a page with multiple server-side Form tags?
......然而......问题仍然以某种方式表现出来。
答案 0 :(得分:2)
在form
标记中包含form
标记符合html规范,因此任何结果都是未定义的行为。
对于你的特殊问题,你能不这样做吗?
<button onclick="tester();">Search</button>