gpt4 book ai didi

c# - 如何使用数据注释属性类来使表单中的空字符串失效?

转载 作者:IT王子 更新时间:2023-10-29 04:20:26 28 4
gpt4 key购买 nike

我试图在表单中要求一个文本输入字段,这意味着表单中需要有一些东西。但是,向我的模型添加 [Required] 标记不起作用。具体来说,查看用户名属性:

public class ColumnWidthMetaData {
[DisplayName("Column Name")]
[Required]
public string ColName { get; set; }

[DisplayName("Primary Key")]
public int pKey { get; set; }

[DisplayName("User Name")]
[Required]
public string UserName { get; set; }

[DisplayName("Column Width")]
[Required]
public int Width { get; set; }
}

这允许空字符串通过模型验证,并最终在它尝试为用户名插入 NULL 值时引发数据库错误。

我怎样才能改变这些属性,使它们看起来像它们应该做的那样?

最佳答案

在大量谷歌搜索和 Stackoverflow 上查看之后,我一无所获。

我去了 MSDN 并查看了 System.ComponentModel.DataAnnotations Namespace .

我仔细查看了 Required 属性,注意到 AllowEmptyStrings property .将此设置为 false 告诉属性不允许任何空字符串,我认为这是默认行为,因为 Required 的要点是要求某些东西被输入,空字符串表示没有输入任何内容。

但这并没有解决问题,因为默认情况下空字符串被强制为 null,这不是空字符串,因此是允许的。这又一次是荒谬的,因为 Required 应该测试是否输入了某些内容,而 null 表示没有输入任何内容。但是,AllowEmptyStrings 页面有一个指向 DisplayFormAttribute 属性 ConvertEmptyStringsToNull 的链接.如果将此设置为 false,则空字符串将保持为空字符串,然后所需的标记将不允许它们。

所以,这是解决方法:

public class ColumnWidthMetaData {
[DisplayName("Column Name")]
[Required(AllowEmptyStrings=false)]
[DisplayFormat(ConvertEmptyStringToNull=false)]
public string ColName { get; set; }

[DisplayName("Primary Key")]
public int pKey { get; set; }

[DisplayName("User Name")]
[Required(AllowEmptyStrings=false)]
[DisplayFormat(ConvertEmptyStringToNull=false)]
public string UserName { get; set; }

[DisplayName("Column Width")]
[Required]
public int Width { get; set; }
}

关于c# - 如何使用数据注释属性类来使表单中的空字符串失效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23939738/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com