2012-09-10 41 views
1

我注意到C#中一个奇怪的问题,它一直在困扰我的头几个星期,所以我想我只是把这个问题放在那里。所以我的问题基本上是如何处理多个客户<form>的服务器内部形式<form runat="server">?我一直在写一个网站,我遇到了一个很奇怪的问题。C#在<form runat =“server”>中有多个客户端表单></form>?

所以这里是重新创建这个问题的基本故障。

1)有一个简单的JavaScript方法,里面有一个警报,如果它被调用会触发。

eg: function tester() { 
     alert("adf"); 
     } 

2)打开在视觉工作室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> 
+0

针对html规范... 任何证明/文件? – Charles

+0

http://stackoverflow.com/questions/379610/can-you-nest-html-forms ... kkay我懂了 – Charles

相关问题