2012-09-10 46 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

相關問題