2014-04-30 82 views
0

我在ASP.NET頁面上有3個HTML複選框。未經檢查複選框始終返回值

<input type="checkbox" id="level-option-1" name="level-option-1" value="1" checked /> 
<input type="checkbox" id="level-option-2" name="level-option-2" value="2" /> 
<input type="checkbox" id="level-option-3" name="level-option-3" value="3" /> 

這些字符串被創建的服務器側和加入到頁(通過設置LiteralText)。 level-option-1被選中。

當頁面回發時,Request.Form["level-option-1"]的值爲1(因爲複選框是通過服務器端的字符串版本檢查的)。 Request.Form["level-option-2"]Request.Form["level-option-3"]不存在(如我所料)。

如果level-option-1是(瀏覽器)選中,並level-option-2檢查(瀏覽器),Request.Form["level-option-1"]調回時仍具有1值。 Request.Form["level-option-2"]具有正確的值2Request.Form["level-option-3"]不存在。

我不明白Request.Form["level-option-1"]總是有價值。我曾嘗試使用XHTML checked="checked"也具有相同的結果。

如果我修改字符串版本以便生成下面的內容 - Request.Form["level-option-1"]只在瀏覽器中檢查時存在值1 - 這正是我所期望的。

<input type="checkbox" id="level-option-1" name="level-option-1" value="1" /> 
<input type="checkbox" id="level-option-2" name="level-option-2" value="2" /> 
<input type="checkbox" id="level-option-3" name="level-option-3" value="3" /> 

假設checked屬性已設置爲服務器端,我怎麼知道如果它實際上是不檢查時,它的貼後背?這是正常的行爲嗎?

回答

0

我一直沒能完全解決這個問題,但我使用結束了的解決辦法是沒有checked屬性建立HTML字符串(服務器端)。然後客戶端,進行AJAX調用以確定是否需要檢查它們。

漂亮的垃圾真的,但那麼是問題;)