Asp.net
如何從 FormCollection 中獲取複選框值?
我有一個複選框和按鈕:
@using(Html.BeginForm()) { <div id="search-block"> <input type="checkbox" name="showAll" id="showAll">Include completed <input type="submit" value="Apply"/> </div> }控制器中的第二件事:
[HttpPost] public ActionResult Index(FormCollection collection) { var showAll = collection["showAll"]; TempData["showAll"] = showAll; ... something ... }它實際上正在工作,但是:
如果未選中復選框,我將收到 null (不會打擾我)。
如果選中復選框,我會收到來自 的“on”
FormCollection,這不是我需要的。我想收到真假。我怎樣才能做到這一點?
<input type="checkbox" name="showAll" id="showAll">Include completed將發布
"on"或的值"off"。這不會綁定到布爾值,
要接收布爾值,您可以使用 HTML Helper Checkbox Like
@Html.CheckBox("showAll") <label for="showAll" style="display:inline">Include completed</label>更新:
如果選中,則 html 幫助程序將回發
"true,false",如果未選中,則為"false"您可以將此解決方法作為
bool MyBoolValue= Convert.ToBoolean(collection["showAll"].Split(',')[0]);這是因為 Html 助手類添加了一個額外的
hidden欄位來保存複選框的狀態
我已經嘗試了輸入標籤,它的工作原理如下所示:
<form method="post"> <input type="checkbox" id="chkRmb" name="chkRmb" /> Remember Me? <input type="submit" value="Log In" class="btn btn-default login-btn" /> </form>在控制器中,比較字元串值並將其轉換為布爾值。
bool rmbMe = (formdata["chkRmb"] ?? "").Equals("on", StringComparison.CurrentCultureIgnoreCase);