2014-02-12 62 views
0

我在.cshtml頁面中有一個複選框;如何獲取ASP.net中複選框的布爾值MVC 4

@Html.CheckBox("All", new { @class = "chkBox"}) 

我想在我的控制器類此複選框的布爾值,對於我已經試過

bool all = Convert.ToBoolean(collection["All"]); 

其中collectionFormCollection類的對象。
但我收到複選框的值爲「all」,我不知道如何使用formcollection對象獲取選中或未選中的值。

如果有人有任何想法,請告訴我。謝謝。

回答

0

謝謝你們所有的答案,都是有道理的。但是按照實現上述要求的我已經修改了我的.cshtml代碼了一下,而不是使用剃刀語法我使用這在我的.cshtml網頁

<input id="All" name="All" value="true" type="checkbox" class="chkBox" /> 

現在,在我的.cs頁我有收穫布爾價值如下;

all = Convert.ToBoolean(collection["All"]); 

所以,基本上它是什麼,如果該複選框是聽之任之,然後它會給valuefalse,否則的FormCollection會考慮的複選框,將給予all值作爲true

2

爲什麼不把它綁定到模型上?

public class MyModel { 
    public bool All {get; set;} 
} 

在你看來只是做了以下

@html.CheckBoxFor(m=>m.All) 

應該這樣做。

1

這是因爲您輸入的標籤的值爲all。在這種情況下,它是綁定正確的類型了良好的初步實踐,爲示例:或者

public ActionResult Post(bool all) 
{ 
    //here you will get the all boolean value, if check or not as boolean 
} 

,比這更好的,你可以創建一個ViewModel,並將其綁定,樣品:

添加類王氏您要在Models文件夾中使用的字段。

public class MyViewModel 
{ 
    public string Name { get; set; } 
    public bool All { get; set; } 
} 

它之後,在你看來,你只需輸入查看和使用HTML輔助創建控件,用於樣品:

@model Models.MyViewModel 

@using (Html.BeginForm("Post", "Home", FormMethod.Post)) 
{ 
    @Html.TextBoxFor(model => model.Name) 

    @Html.CheckBoxFor(model => model.All) 

    <input type="submit" value="Send" /> 
} 

觀測數據:這只是一個樣本

在你的控制器中,你只需得到這個模型的一個實例,並讓asp.net mvc將它綁定爲對象:

public ActionResult Post(MyViewModel model) 
{ 
    // here you have the model.All as boolean value 

} 

這是一個很好的做法,因爲ViewModels代表了視圖上需要的字段並在上下文(控制器,視圖,服務,apis等)之間傳輸。

2

你可以得到這樣也:

讓我們假設你的控制器名稱爲指數

 [HttpPost] 
     public ActionResult Index(bool All) 
     { 
      return View(); 
     } 

如果「全部」(複選框)被選中,那麼一切都變得真實。

如果「全部」(複選框)未選中,則全部變爲假。

基於true或false您可以用自己的方式修改代碼。

注意:您在Post Controller中提到的變量必須與您在cshtml中爲複選框給出的名稱相同。

即;

@ Html.CheckBox( 「所有」,新{@class = 「chkBox」})

公衆的ActionResult指數(布爾所有

0

您需要像這樣修改代碼。它的工作原理:您需要先將其轉換爲字符串,然後轉換爲布爾值。

Convert.ToBoolean(collection["All"].ToString()); 
相關問題