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條經驗 獲得超7個贊
你說:“我通過 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 關注
- 183 瀏覽
添加回答
舉報