Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 3 将复选框绑定到MVC中的int数组/可枚举 @Html.CheckBox(“订单号”,新的{value=1}) @复选框(“OrderNumber”,新的{value=2}) @复选框(“OrderNumber”,新的{value=3}) @复选框(“OrderNumber”,新的{value=4}) @复选框(“OrderNumber”,新的{value=5}) [HttpPost] 公共操作结果标记已完成(IEnumerable OrderNumber){} [HttpPost] 公共操作结果标记已完成(IEnumerable OrderNumber){}_Asp.net Mvc 3_Int_Ienumerable_Checkbox_Model Binding - Fatal编程技术网

Asp.net mvc 3 将复选框绑定到MVC中的int数组/可枚举 @Html.CheckBox(“订单号”,新的{value=1}) @复选框(“OrderNumber”,新的{value=2}) @复选框(“OrderNumber”,新的{value=3}) @复选框(“OrderNumber”,新的{value=4}) @复选框(“OrderNumber”,新的{value=5}) [HttpPost] 公共操作结果标记已完成(IEnumerable OrderNumber){} [HttpPost] 公共操作结果标记已完成(IEnumerable OrderNumber){}

Asp.net mvc 3 将复选框绑定到MVC中的int数组/可枚举 @Html.CheckBox(“订单号”,新的{value=1}) @复选框(“OrderNumber”,新的{value=2}) @复选框(“OrderNumber”,新的{value=3}) @复选框(“OrderNumber”,新的{value=4}) @复选框(“OrderNumber”,新的{value=5}) [HttpPost] 公共操作结果标记已完成(IEnumerable OrderNumber){} [HttpPost] 公共操作结果标记已完成(IEnumerable OrderNumber){},asp.net-mvc-3,int,ienumerable,checkbox,model-binding,Asp.net Mvc 3,Int,Ienumerable,Checkbox,Model Binding,如果在操作方法中使用第一个签名,则会得到一个空的IEnumerable 如果我使用第二个签名,我确实会收到值,但对于未选择的值,我也会收到一个假值(因为MVCs模式使用隐藏字段隐藏所有复选框) e、 我将收到类似于ordernumber={“1”、“2”、“false”、“4”、“false”} 为什么我不能直接获取数字列表?因为提供的复选框帮助程序就是这样工作的 您必须自己为复选框生成html。然后不会生成隐藏的输入,您将只获得选定的整数值。您可以通过以下方式获得所有选中的值 控制器代码: @

如果在操作方法中使用第一个签名,则会得到一个空的
IEnumerable

如果我使用第二个签名,我确实会收到值,但对于未选择的值,我也会收到一个假值(因为MVCs模式使用隐藏字段隐藏所有复选框)

e、 我将收到类似于
ordernumber={“1”、“2”、“false”、“4”、“false”}


为什么我不能直接获取数字列表?

因为提供的
复选框帮助程序就是这样工作的


您必须自己为复选框生成html。然后不会生成隐藏的输入,您将只获得选定的整数值。

您可以通过以下方式获得所有选中的值

控制器代码:

@Html.CheckBox("orderNumbers", new { value = 1 })
@Html.CheckBox("orderNumbers", new { value = 2 })
@Html.CheckBox("orderNumbers", new { value = 3 })
@Html.CheckBox("orderNumbers", new { value = 4 })
@Html.CheckBox("orderNumbers", new { value = 5 })

[HttpPost]
public ActionResult MarkAsCompleted(IEnumerable<int> orderNumbers) { }

[HttpPost]
public ActionResult MarkAsCompleted(IEnumerable<string> orderNumbers) { }
查看代码:

    public ActionResult Index()
    {            
        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult Index(string[] orderNumbers)
    {
        return View();
    }
@使用(Html.BeginForm())
{
}

请记住一件事,您需要为所有复选框指定相同的名称。在数组中,您将获得所有选中复选框的值。

除了alok_dida的精彩答案之外。因为所有的值都是整数,所以您可以让控制器代码获取一个整数数组,并避免自己进行转换

这适用于MVC4+:

@using (Html.BeginForm())
{
    <input name="orderNumbers" type="checkbox" value="1" />
    <input name="orderNumbers" type="checkbox" value="2" />
    <input name="orderNumbers" type="checkbox" value="3" />
    <input name="orderNumbers" type="checkbox" value="4" />
    <input name="orderNumbers" type="checkbox" value="5" />

    <input type="submit" name="temp" value="hi" />
}

的确,我当然知道。真是个白痴!我错误地认为,如果他们不能绑定到请求的类型,他们会在模型绑定器中做一些聪明的事情来忽略错误的值。
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(int[] orderNumbers)
{
    return View();
}