asp.net-mvc - 是否可以在 MVC 3 中为 StringLength 验证器提供运行时值?

标签 asp.net-mvc validation data-annotations

我正在使用数据注释验证 MVC 3 中的一个字段:

[StringLength(50, MinimumLength=5)]
public string MyText { get; set; }

有没有办法在那里提供动态值?像这样的东西:
[StringLength(50, MinimumLength=GetMinimumLengthValueFromDb())]
public string MyText { get; set; }

我的最后一招是使用远程验证器。如果我找不到方法来使用 StringLength , 我会用 RemoteValidator .

最佳答案

不,只能为属性提供编译时值,如常量。此限制适用于所有 C# 属性,并非特定于数据注释属性,而是适用于 StringLengthAttribute意味着有办法在运行时提供不同的长度。

您需要使用另一种验证方式,或者创建一个继承自 StringLengthAttribute 的自定义属性。接受 Type以及该类型的方法名称作为长度值的来源。这种方法类似于 CustomValidationAttribute 使用的方法。接受 ValidatorType和一个 Method名称作为验证来源。

关于asp.net-mvc - 是否可以在 MVC 3 中为 StringLength 验证器提供运行时值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8256400/

相关文章:

asp.net-mvc - EF6 模型和 WebAPI 2.2 + OData 4.0 模型有什么关系?

AngularJS ng-required 只允许空格

c# - 数据注释上的正则表达式在子属性上的行为不同

c# MVC 有条件地隐藏标题按钮

html - 单击描述时选中复选框

Java整数输入验证

javascript - 步骤属性不适用于 HTML 输入类型

c# - 自定义不显眼的日期验证器

asp.net-mvc-4 - 从数据库上传模型时丢失dataAnottation

asp.net-mvc - 如何让 ASP.NET MVC 应用程序从 Azure 服务总线队列读取数据?