- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用流畅的验证,我已经将一些常见的电子邮件地址验证规则提取到自定义电子邮件验证器中,例如。
public class CustomeEmailValidator : AbstractValidator<string>
{
public CustomeEmailValidator (string fieldName)
{
RuleFor(m => m).NotEmpty().WithMessage(EmailEmptyMsg).WithName(fieldName);
RuleFor(m => m).EmailAddress().When(x => !string.IsNullOrEmpty(x)).WithMessage(EmailInvalidMsg).WithName(fieldName);
RuleFor(m => m).Must(x => x.Length <= 94).When(x => !string.IsNullOrEmpty(x)).WithMessage(EmailLengthMsg).WithName(fieldName);
}
}
然后在其他验证器中调用它,例如
public class LoginModelValidator : AbstractValidator<LoginModel>
{
public LoginModelValidator()
{
RuleFor(m => m.Password).NotEmpty().WithMessage(EmptyPasswordMsg);
RuleFor(m => m.Email).SetValidator(new MediGapEmailValidator("Email"));
}
}
问题是返回错误有一个错误 PropertyName of 'Email.Email' 或 EmailAddress.Email 我需要它只是 'Email' 或只是一个不带点的属性名称。
我在调用 setValidator 时尝试了 OverridePropertyName
RuleFor(m => m.Email).SetValidator(new MediGapEmailValidator("Email")).OverridePropertyName("Email");
但是好像不行。
有没有更好的方法来提取这个常见的验证码?
最佳答案
也许尝试另一种方法并使用扩展方法而不是自定义验证器。像这样:
public static class ValidationExtensions
{
public static void ValidateEmail<TV>(this AbstractValidator<TV> validator, Expression<Func<TV, string>> property)
{
validator.RuleFor(property).NotEmpty().WithMessage(EmailEmptyMsg);
// other rules go here...
}
}
然后您可以从任何验证器中调用它:
public class UserValidator : AbstractValidator<User>
{
public UserValidator()
{
this.ValidateEmail(x => x.PrimaryEmail);
this.ValidateEmail(x => x.SecondaryEmail);
}
}
关于c# - 如何摆脱流畅的 ValidationResult 的 PropertyName 中的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13024866/
这个问题已经有答案了: JavaScript property access: dot notation vs. brackets? (17 个回答) 已关闭 5 年前。 假设我有一个像这样的对象数组
所以我定义了一个带有属性的类 - 在本示例中我们将其称为 propertyName。我在实现中使用 @synthesize 设置了属性。 我有一个名为 objectToNSDictionary 的方法
我正在使用 java.util.Properties 对象,我通常使用 keySet() 来获取属性的所有键。 我想知道 keySet() 或 propertyNames() 哪个更好。 proper
关闭。这个问题是opinion-based 。目前不接受答案。 想要改进这个问题吗?更新问题,以便 editing this post 可以用事实和引文来回答它。 . 已关闭 9 年前。 Improv
在试图更好地理解 javascript 背后的原型(prototype)时,我偶然发现了以下内容,到目前为止我还无法理解。 我知道函数是一等对象,但我不明白为什么 Object 在 Function.
我已经看到在同一个项目中使用了这两种样式,我想知道它们之间是否存在任何语义差异,或者是否会推荐任何一种风格以及为什么。 最佳答案 只要您有一个带有类型参数的复杂属性路径,您就会遇到一个显着的差异。 从
在 objective-c 中通过“propertyname”和“self.propertyname”访问属性之间有什么区别?你能在答案中涵盖: 什么是最佳做法? 这两种方法如何影响内存管理(保留计数
我有这样的对象定义 var obj = { abcdefghijkl: 'abcdefghijkl', other_key: 1234 }; 我可以在 Javascript 中将获取属性名称的对象本身
在 javascript 中,我们可以使用键而不是索引号从数组中选择一个值,执行如下操作: objectName["propertyName"] 或 objectName.propertyName J
我不知道正则表达式, 但是我需要正则表达式来计算ClassName.PropertyName吗? 需要验证 appSettings 中的一些值是否符合 ClassName.PropertyName 约
在实现 INotifyPropertyChanged 时,我一直不确定 propertyName 的含义。所以通常你将 INotifyPropertyChanged 实现为: public class
我面临的问题是,当我有一个类的属性具有如下默认值时: public class Border { public Border() { InitializeAdornment()
我有一些使用 ASP.Net MVC 的 C# 代码,它使用 Json.Net 来序列化一些 DTO。为了减少负载,我使用 [JsonProperty(PropertyName = "shortNam
故事 我在我的应用中使用 Firebase 实时数据库。我有一个类似这样的模型。 class Item { int mItemName; // Simplified for brevi
This question already has answers here: JavaScript property access: dot notation vs. brackets? (13个回
这是我的 xaml,它告诉 collectionviewsource 排序属性名称。 上面的 xaml 工作正
源代码 我有一些代码要求我调用一个属性 setter 来测试一个类的锁定功能是否正常工作(该类的一些函数是async,要求挂锁 bool 值是在执行期间设置)。如果已为实例设置锁,则已编写 sette
源代码 我有一些代码要求我调用一个属性 setter 来测试一个类的锁定功能是否正常工作(该类的一些函数是async,要求挂锁 bool 值是在执行期间设置)。如果已为实例设置锁,则已编写 sette
我正在尝试将我的 Winforms UI 绑定(bind)到我的 ViewModel。我能够在 UI 更改时成功更新我的 ViewModel,反之亦然。但是,我似乎无法理解 PropertyChang
有 Spring Data Rest reference有人可以解释一下排序表达式 ($propertyname,)+[asc|desc]? ?它看起来像正则表达式,但我怀疑。 我知道,如果我简单地将
我是一名优秀的程序员,十分优秀!