我有一个 FormCollection 被传回控制器,它被处理,但是,如果它为 true'true,false'
,则传递回的值,但如果它未选中,它只是'false'
。我的字段使用 iChecks。
我正在构建的对象如下:
field.IsSelected = Convert.ToBoolean(form["Field.IsChecked"]);
获得正确值的最佳方法是什么?
我建议这样做:
form["Field.IsChecked"].Contains("true")
它已经返回一个布尔值,因此您不必转换。
或
你可以去:
Convert.ToBoolean(form["Field.IsChecked"].Split(',').First());
或Convert.ToBoolean(form["Field.IsChecked"].Split(',')[0]);
为此目的最好使用模型绑定器,这是当今执行此操作的正确方法,您可以简单地将布尔属性添加到模型类中,然后使用 MVC 的复选框助手。
public class YourViewModel
{
public bool IsChecked { get; set; }
}
和您的操作方法:
public async Task<ActionResult> Index(YourViewModel viewModel)
{
field.IsSelected = viewModel.IsChecked;
}
你的看法是这样的:
@using (Html.BeginForm("Index", "YourController", FormMethod.Post))
{
<div>
@Html.CheckBox("IsChecked")
</div>
<input type="submit" value="Submit" />
}
这对我有用
Convert.ToBoolean(form["Field.IsChecked"].Split(',').First());