3 回答
TA贡献1998条经验 获得超6个赞
将 @Html.DropDownListFor 用于可为 null 的属性,因为当您在视图中发送空模型然后在 POST 中发送时,您将得到 false 作为布尔返回值。您不能将复选框用于布尔模型。
如果你想使用复选框和单选按钮作为布尔值,那么使用 jquery 来设置值。但 DropdownList 最适合布尔模型属性。
TA贡献1880条经验 获得超4个赞
nullable
因此,关于在复选框中使用布尔值,它是不合适的,因为nullable
布尔值可以存储 3 种状态:null
、true
和false
。但是复选框只能有一个true
或一个false
其控件。这是因为 aHTML Checkbox
没有 3 态支持,因为当时不存在这个概念。它与旧的 Windows 窗体复选框共享该属性。所以需要用adropdownlist
来处理这三种状态。如果您想使用复选框,那么:
停止使用
nullable
布尔值
或者
停止尝试使用 a
checkbox
因为这样null
状态将转换为false
TA贡献1936条经验 获得超6个赞
你说:“我通过 return View() 发送一个空模型” - 检查模型是否为空。
控制器:
public ActionResult Index()
{
return View();
}
[HttpPost]
public ActionResult Index(Models.MyModel m)
{
return View(m);
}
看法:
<form method="post">
@{
if (Model == null)
{
@Html.CheckBoxFor(m => m.boolvalue)
@Html.RadioButtonFor(m => m.mytypevalue,false);
@Html.RadioButtonFor(m => m.mytypevalue,false)
}
else
{
@Html.CheckBoxFor(m => m.boolvalue)
@Html.RadioButtonFor(m => m.mytypevalue, Model.mytypevalue.Value1);
@Html.RadioButtonFor(m => m.mytypevalue, Model.mytypevalue.Value2)
}
}
</form>
模型:
public class MyModel
{
public bool boolvalue;
private MyTwoValuedType _mytypevalue;
public MyTwoValuedType mytypevalue
{
get
{
if (_mytypevalue == null)
{
_mytypevalue = new MyTwoValuedType();
}
return _mytypevalue;
}
set
{
_mytypevalue = value;
}
}
}
- 3 回答
- 0 关注
- 138 浏览
添加回答
举报