在asp.net核心中,是否将空字符串转换为NULL?

问题描述 投票:0回答:4

假设我有一个form,并且当""从视图发送到formcontroller时选择了action method的值,asp.net core会将空字符串转换为NULL值?

如果我不使[required]属性的布尔属性可为空,则会出现此错误:值”是无效的。

这是否意味着:""被评估为NULL,布尔属性不允许NULL,asp.net核心返回错误,表明您不能将空的string传递给Model属性,因为它不可为空,因为asp.net core将空字符串转换为NULL

c# asp.net asp.net-core data-annotations
4个回答
0
投票

不是,它们不是-消息显示“值”无效。”这是一个空字符串的样子。


0
投票

如果您不想设置必填字段,则需要为boolean设置值。如果为空,则需要发送false


0
投票

MVC模型绑定确实支持将空字符串绑定为null或空字符串,具体取决于元数据。

您可以使用属性控制每个字段的行为;

[DisplayFormat(ConvertEmptyStringToNull = false)]
public string Property { get; set; }

或通过实现自定义IDisplayMetadataProvider全局覆盖该行为。或者甚至提供自己的IModelBinder / IModelBinderProvider


0
投票

您需要了解的第一件事是这里的选项字段是]的类型> bool

[The only content it can receive is true or false or null

,无论您输入的是空字符串还是非true或false的字符串,它将被识别为null。

Reuqired的属性指示选项字段不能为空

,因为Options is a bool type,因此在输入空字符串后,该空字符串将转换为空值,并且对于reuqired属性的限制,它不能为null,因此会提醒您无效。

如果要允许Option接收空值,则只需要删除reuqired属性。

在Required属性限制的前提下,我进行了代码测试,您可以参考:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.