我在VB.Net中使用ASP.Net MVC 4,我已经看到了一些关于如何在c#中为可空布尔值创建复选框的其他答案。通常转换为VB.Net非常简单。这我想不通。CheckBoxFor VB.Net中的可空布尔值
其他的答案说,要做到这一点..
做出Boolean.cshtml在我EditorTemplates文件夹,并坚持
@model bool?
@Html.CheckBox("", Model.GetValueOrDefault())
所以,我尝试了VB equivelent,在EditorTemplates我的文件夹作出Boolean.vbhtml并把这
@model System.Nullable(of Boolean)
@Html.CheckBox("", Model.GetValueOrDefault)
然后在我看来我有
@Html.EditorFor(Function(x) x.myNullableBool)
即代码抛出该异常:
对象变量或带块变量未设置。
我发现了几个不同的地方,它们与我们发布的非常相似的c#示例非常相似。有谁知道如何让这个工作在VB.Net?
编辑
这是什么样的,我试图做(如果它的工作它会是更好)
@model System.Nullable(of Boolean)
@Html.CheckBox("", If(Model is Nothing, False, Model))
在您的ViewModel中使用Nullable(布尔值),但是使用复选框设置它的目的是什么?仍然有三个可能的'价值'。改用两个不同的ViewModel代替。如果你目前绑定你DomainModel我会建议使用ViewModels来代替。 – nik
@milter - 我总是希望2个值中的一个值为真或假,数据库必须保持为空,因为数据可以来自其他来源,并且从这些来源可以为空,在我的情况下,如果它恰好为空 - 强制它为假是好的 –