嗨,我有这样的班级结构
public class Order
{
public Address OfficeAddress {get;set;}
}
public class Address
{
public string ID {get;set;}
public string Street1 {get;set;}
public string street2 {get;set;}
public string City {get;set;}
public string State {get;set;}
public string ZipCode {get;set;}
}
我有以下订单的验证器
public OrderValidator : AbstractValidator<Order>
{
public OrderValidator()
{
Custom(Order =>
{
//Did some custom validation...works fine.
});
RuleFor(o => o.OfficeAddress.StreetLine1)
.Cascade(CascadeMode.StopOnFirstFailure)
.NotEmpty().WithLocalizedMessage(() => Myresource.required)
.Length(1, 60).WithLocalizedMessage(() => Myresource.maxLength)
.Unless(o => null == o.OfficeAddress);
}
}
我的消息显示是这样的
Office Address. Street Line1 is required
为什么要附加“办公室地址。”以及为什么要拆分属性名称?我的资源消息是这样的 {PropertyName} 是必需的。现在我怎么能告诉它不要显示“办公室地址。”并且不要拆分它。
我在其他视图中有类似的复杂地址属性,但在那里工作正常,我不知道为什么。唯一的区别是所有其他验证器都定义了 RuleSet 并且在它们内部我验证了类似的地址,但在上面它不在 RuleSet 中。这里对于控制器 Post Action 方法中的这个视图,即使我没有提到[CustomizeValidator(RuleSet = "RuleSetName")]
,因为我上面有自定义验证。不确定这是否是问题所在。
即使我决定使用 RuleSet,那么我可以在同一个验证器中拥有“RuleSet”以及自定义验证器吗?如果是,那么我应该将 RuleSet 命名为“地址”吗?并用相同的名称标记动作方法,它将同时调用自定义和“地址”规则集?