У вас есть примеры того, как должна выглядеть проверка клиента для строки []?
У меня есть следующий пользовательский класс валидатора, который отлично работает на стороне сервера:
public class RequiredRepeatedStrings : ValidationAttribute, IClientValidatable
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null)
{
string[] valueAsStringArray = value as string[];
if (valueAsStringArray == null || valueAsStringArray.Any(x => string.IsNullOrEmpty(x)))
return new ValidationResult(this.ErrorMessage);
}
return ValidationResult.Success;
}
public IEnumerable<ModelClientValidationRule> GetClientValidationRules(ModelMetadata metaData, ControllerContext context)
{
var rule = new ModelClientValidationRule();
rule.ErrorMessage = FormatErrorMessage(metaData.GetDisplayName());
rule.ValidationType = "requiredStrings";
yield return rule;
}
}
Моя модель:
[RequiredRepeatedStrings(ErrorMessage = "Bitte eine Anschrift eingeben!")]
[Display(Name = "Anschrift")]
public string[] Address { get; set; }
Частичное представление (где-то в foreach l oop):
@foreach (var country in Model.CompanyLocations.SelectedCountry)
{
...
<div class="form-group add_top_60">
@Html.LabelFor(m => m.CompanyLocations.Address):
@Html.TextBoxFor(m => m.CompanyLocations.Address[index], new { placeholder = "Max-Mustermann Str. 1", @class = "form-control" })
<i class="icon_mail_alt" style="top: 32px;"></i>
@Html.ValidationMessageFor(m => m.CompanyLocations.Address, null, new { @class = "text-danger" })
</div>
...
}
Адаптер JS:
$.validator.unobtrusive.adapters.add("requiredStrings");
$.validator.addMethod("requiredStrings", function (value, element, params) {
for (var i = 0; i < value.length; i++) {
if (value[i] == '') {
return false;
}
}
return true;
});
Но проверка на стороне клиента в этом случае не работает. Ссылки уже включены, и проверка на стороне клиента для пользовательского валидатора работает в других случаях, например, «если входное значение содержит специальные символы». Так что не из-за ссылок на библиотеки и тд. Кажется, что-то с кодом не работает должным образом.
Сценарий заключается в том, что у меня есть форма, в которой я могу добавить дополнительные местоположения, и каждое местоположение имеет, например, название улицы. Поэтому название улицы является строковым массивом. Если поле ввода пустое, оно не является нулевым, а ''.
Есть идеи?
Я уже проверил этот пост, но там нет решения: Проверить строковый массив в ASP. NET MVC на стороне клиента
Спасибо
Ди