Как получить свойство по индексу с помощью пользовательской проверки в ASP.NET Core? - PullRequest
2 голосов
/ 21 июня 2019

У меня есть поля ввода на моей странице Razor, которые загружаются с помощью цикла foreach. Например:

@foreach (var item in Model.DataList.Where(p => p.SubmittedBy == user.SubmittedBy))
{
    <input asp-for="AllTable.RefNumber" name="@item.Id" class="form-control" placeholder="Comments (optional)">
}

AllTable - это модель, RefNumber - это свойство

У меня также есть пользовательский класс проверки, который проверяет значение текстового поля, используя это:

var refNumber = (string)validationContext.ObjectType.GetProperty(validationContext.MemberName).GetValue(validationContext.ObjectInstance, null);

В таком виде refNumber равен нулю Как проверить поле, сохранив атрибут уникального имени? Если я удаляю уникальное имя, оно работает нормально, но при возникновении ошибки проверки оно отображается для всех тех же полей, поскольку имена совпадают с asp-for.

Спасибо

1 Ответ

1 голос
/ 21 июня 2019

Поскольку это страница бритвы, вы не сможете получить доступ к модели из ObjectInstance, так как я не верю, что она в настоящее время поддерживается, но передаваемое значение будет вашим объектом списка, поэтому

    var myList = value as ApprovedList;
    var refNames = myList.Select(s => s.RefName);

Кроме того, способ добавления входных данных из списка не позволяет привязать его к модели.Должно быть что-то вроде этого.

    <input asp-for="AllTable[i].RefNumber" class="form-control" placeholder="Comments (optional)">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...