VB.Net中可为空布尔值的复选框
我在VB.Net中使用ASP.NETMVC4,我看到了一些关于如何在c#中为可空布尔值设置复选框的其他答案。通常转换到VB.Net非常简单。这我搞不懂 其他答案是这样的 在我的EditorTemplates文件夹中创建Boolean.cshtml并粘贴 因此,我尝试了VB等价物,在EditorTemplates文件夹中,我制作了Boolean.vbhtml并将其放入VB.Net中可为空布尔值的复选框,vb.net,razor,asp.net-mvc-4,Vb.net,Razor,Asp.net Mvc 4,我在VB.Net中使用ASP.NETMVC4,我看到了一些关于如何在c#中为可空布尔值设置复选框的其他答案。通常转换到VB.Net非常简单。这我搞不懂 其他答案是这样的 在我的EditorTemplates文件夹中创建Boolean.cshtml并粘贴 因此,我尝试了VB等价物,在EditorTemplates文件夹中,我制作了Boolean.vbhtml并将其放入 @model System.Nullable(of Boolean) @Html.CheckBox("", Model.GetVa
@model System.Nullable(of Boolean)
@Html.CheckBox("", Model.GetValueOrDefault)
那么在我看来我有
@Html.EditorFor(Function(x) x.myNullableBool)
该代码引发此异常:
未设置对象变量或带块变量
我发现有几个不同的地方有非常相似的c#示例,非常类似于这里发布的内容。有人知道如何在VB.Net中使用它吗
编辑
这正是我想做的(如果成功的话会更好)
A有两种状态:
- 检查
- 未经检查
- 真的
- 假的
- Nothing(C#中为空)
- 真的
- 假的
~/Views/Shared/EditorTemplates/Boolean.vbhtml
自定义编辑器模板:
@ModelType Nullable(Of Boolean)
@Html.CheckBox("", If(Model.HasValue, Model.Value, False))
但是,如果您正确地设计视图模型,即与视图的要求相匹配,则不必进行此类攻击。在视图模型中设置为Nullable(布尔值)但使用复选框进行设置的目的是什么?仍然有三种可能的“价值观”。最好使用两种不同的ViewModel。如果您当前绑定的是DomainModel,我建议您改用ViewModels。@milter-我总是想要两个值中的一个为true或false,db必须保持为null,因为数据可以来自其他来源,而来自这些来源的数据可以为null,在我的例子中,如果它恰好为null-强制它为false是可以的,我可能会更改视图模型,但我尝试了您的代码,并得到了“未找到类型“Boolean”的公共成员“HasValue”。自定义编辑器模板的
ModelType
应该是@ModelType Nullable(属于布尔)
(如我的回答所示),不是@ModelType Boolean
。啊,我有了“@model”,我需要“@ModelType”,谢谢你的帮助,我可能会更改ViewModel。但我现在感觉好多了,我一直在读关于自定义编辑器模板的书,现在有一个可以使用了
@model System.Nullable(of Boolean)
@Html.CheckBox("", If(Model is Nothing, False, Model))
@ModelType Nullable(Of Boolean)
@Html.CheckBox("", If(Model.HasValue, Model.Value, False))