现在表单可以为我的布尔字段发送三个值。
false
true
""
procedure.needsAuditing = Convert.ToBoolean(collection["needsAuditing"]);
如何构造此变量,以便如果它""
不会尝试将其转换为布尔值,而是通过null
?
现在表单可以为我的布尔字段发送三个值。
false
true
""
procedure.needsAuditing = Convert.ToBoolean(collection["needsAuditing"]);
如何构造此变量,以便如果它""
不会尝试将其转换为布尔值,而是通过null
?
像这样尝试...首先procedure.needsAuditing Nullable
查看此链接以获取可空类型的更多详细信息。然后这样做......
bool? c;
procedure.needsAuditing =collection["needsAuditing"]==""? c=null: Convert.ToBoolean(collection["needsAuditing"]);
bool
如果您想要表示未确定( )的 a 的第三种状态,null
您可以使用 a Nullable<bool>
。
因此将属性更改为:
public bool? needsAuditing{ get; set; }
并以这种方式分配它:
object needsAuditing = collection["needsAuditing"];
if(needsAuditing == null)
procedure.needsAuditing = (bool?) null;
else
procedure.needsAuditing = Convert.ToBoolean(needsAuditing);
旁注:您应该考虑使用帕斯卡大小写属性名。请参阅属性命名准则。
if(string.IsNullOrEmpty(collection["needsAuditing"].ToString())
procedure.needsAuditing = null;
else
procedure.needsAuditing = Convert.ToBoolean(collection["needsAuditing"]);
假设needsAuditing
是一个bool?
编辑:我做了 anif else
而不是 a因为编译器会抱怨and?
之间没有转换(这将是 的返回类型)null
bool
Convert.ToBoolean
创建一个ModelBinder
将您的字符串输入转换为可为空的bool
类型。
之后您的方法将如下所示:
void Method(bool? value)
{
}
将procedure.needsAuditing
属性分配给以下方法的结果:
bool? ParseInput(string input)
{
int integerInput;
if (int.TryParse(input, out integerInput))
return integerInput == 1;
return null;
}