在ASP.NET MVC複選框通過的HtmlHelper代碼在這裏產生的FormsCollection物體接收MVC複選框值的解釋:抽象通過
<%= Html.CheckBox("List_" + mailingList.Key, true) %>
因爲這HTML:
<input id="List_NEW_PRODUCTS" name="List_NEW_PRODUCTS" type="checkbox" value="true" />
<input name="List_NEW_PRODUCTS" type="hidden" value="false" />
萬一你想知道爲什麼有一個額外的隱藏領域? - 然後read this。它絕對是一個讓你首先想到'嗯'的解決方案,但是你意識到它是一個非常優雅的解決方案。
我遇到的問題是當我試圖解析後端數據。那麼它的問題就不那麼重要了,如果將來有什麼事情要在框架中改變的話。
如果我使用內置的綁定,一切都很棒 - 它爲我完成。但在我的情況下,我動態生成未知名稱複選框,並在我的模型中沒有相應的屬性。
所以,我最終不得不像這樣寫代碼:
if (forms["List_RETAIL_NOTIFICATION"] == "true,false") {
}
或本:
if (forms.GetValues("List_RETAIL_NOTIFICATION")[0] == "true") {
}
這兩者我還是看和畏縮 - 尤其是因爲世界上沒有保證,這將始終成爲回報價值。我想知道是否有一種方法可以訪問模型綁定器所使用的抽象層 - 或者如果我與我的控制器卡在一起,「知道」這些關於HTTP POST hack的內容。
是的我可能會有點挑剔 - 但也許是一個更聰明的方式使用模型綁定,我可以用來讀取動態創建的複選框參數。
此外,我希望這篇文章可以幫助其他人搜索:「真實的,錯誤的」。儘管我知道它爲什麼這樣做,我只是忘了,花了一點時間才意識到'呃'。
FYI:我試過其他一些東西,這是我發現:
forms["List_RETAIL_NOTIFICATION"]
評估爲「真,假」 forms.GetValues("List_RETAIL_NOTIFICATION")[0]
評估爲「真」 (forms.GetValue("List_RETAIL_NOTIFICATION").RawValue as string[])[0]
評估爲「真」 forms.GetValues("List_RETAIL_NOTIFICATION").FirstOrDefault()
評估板爲 「true」
謝謝,但正如我所說的「我動態生成名稱未知且在我的模型中沒有相應屬性的複選框」。複選框表示用戶可以註冊的所有不同郵件列表 - 這是數據庫驅動的 – 2009-02-03 22:33:55