C#在<form runat =“server”> </form>中有多个客户端表单?

时间:2012-09-10 19:24:44

标签: c# javascript forms

我注意到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?

......然而......问题仍然以某种方式表现出来。

1 个答案:

答案 0 :(得分:2)

form标记中包含form标记符合html规范,因此任何结果都是未定义的行为。

对于你的特殊问题,你能不这样做吗?

<button onclick="tester();">Search</button>