Привет, у меня есть структура класса, как это
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}. Теперь, как я могу сказать, чтобы он не показывал мне «Адрес офиса» и не разделял его.
У меня есть аналогичные сложные свойства адреса в других представлениях, но там все работает нормально, и я не уверен, почему. Единственное отличие состоит в том, что все другие валидаторы имеют определенный набор правил, и внутри них я проверяю адрес аналогично, но здесь выше этого нет в наборе правил. Здесь для этого представления в методе Post Action контроллера я даже не упомянул [CustomizeValidator(RuleSet = "RuleSetName")]
, поскольку у меня есть пользовательская проверка выше. Не уверен, что это проблема.
Даже если я решу использовать RuleSet, могу ли я иметь «RuleSet», а также пользовательский валидатор в одном валидаторе? если да, то что я должен назвать RuleSet как "Адрес"? и отметьте метод действия с тем же именем, и он будет вызывать как пользовательский, так и «адресный» набор правил?