如何在ASP.net MVC 4中获取checkbox的布尔值

时间:2014-02-12 01:46:50

标签: asp.net asp.net-mvc asp.net-mvc-4

我在.cshtml页面中有一个复选框;

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

我想在我的控制器类中获取此复选框的布尔值,因为我已经尝试了

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

其中collectionFormCollection类的对象 但我得到的复选框值为“all”,我不知道如何使用formcollection对象获取已检查或未检查的值。

如果有人有任何想法,请告诉我。感谢。

6 个答案:

答案 0 :(得分:2)

为什么不将它绑定到模型?

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

在您的视图中,只需执行以下操作

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

应该这样做。

答案 1 :(得分:2)

你也可以通过这种方式获得:

我们假设你的控制器名称是索引

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

如果“全部”(复选框)已选中,则全部变为真。

如果“全部”(复选框)已取消选中,则全部变为假。

基于true或false您可以按照自己的方式修改代码。

注意:您在Post Controller中提到的变量必须与您在cshtml中为复选框指定的名称相同。

即;

@ Html.CheckBox(“全部”,新{@class =“chkBox”})

公共ActionResult索引(bool 全部

答案 2 :(得分: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" />
}

Obs:这只是一个样本

在你的控制器中,你只得到这个模型的一个实例,让asp.net mvc为你绑定它作为对象:

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

}

这是一个很好的实践,因为ViewModels代表您在View上需要的字段,并在上下文(控制器,视图,服务,api等)之间传输它。

答案 3 :(得分:0)

您可以尝试这种方法。您可以从asp.net mvc: why is Html.CheckBox generating an additional hidden input

获取更多信息
    bool all = (collections["all"] != "false");

答案 4 :(得分:0)

您需要像这样修改代码。它的工作原理:您需要先将其转换为字符串然后转换为布尔值。

 Convert.ToBoolean(collection["All"].ToString());

答案 5 :(得分:0)

感谢所有人的回答,一切都有意义。但是根据上面的要求我已经修改了我的.cshtml代码,而不是使用razor语法我在我的.cshtml页面中使用它

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

现在在我的.cs页面中,我收集了布尔值,如下所示;

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

所以,基本上它的作用是,如果未选中该复选框,则它将value作为false,否则,formcollection将考虑复选框并将赋予{{1}的值作为all