Проверка правильности .NET MVC 3 - PullRequest
0 голосов
/ 21 мая 2011

Я использую Entity Framework для создания модели.У меня есть иерархия таблиц, где User - моя базовая таблица, и у меня есть таблицы Lecturer и Student, в которых есть некоторые конкретные данные.Платформа Entity Framework создала модель, которая ей не подходит, поэтому я создал свой средний уровень, который называется modelview, где у меня есть таблица ученика, которая упаковывает все данные из таблиц пользователя и ученика.Я сделал функцию CRUD для студентов, но я только хочу, чтобы администратор мог создать студента с некоторым начальным паролем, а администратор не должен иметь возможность изменить пароль студента при действии Изменить.Проблема заключается в том, что поле ввода пароля обязательно для студента. Создайте действие, поэтому я установил для него атрибут [Обязательный], но при редактировании у меня не должно быть поля пароля, и тогда мой ModelState.IsValid всегда будет ложным, поскольку в этом случае поле пароля отсутствует.и, следовательно, является нулевым.Я думал о добавлении скрытого поля пароля, но это было бы очень плохо, потому что кто-то мог посмотреть на источник страницы и увидеть значение пароля.Могу ли я как-то, когда это поле обязательно, а другое время не требуется?Если у вас есть другие идеи, которые могут помочь, пожалуйста, поделитесь со мной.

Ответы [ 3 ]

1 голос
/ 21 мая 2011

Когда пользователь редактируется, вы можете вставить скрытое поле-заполнитель со значением * (или что-то в этом роде).Это удовлетворяет атрибуту Required - вам просто нужно убедиться, что вы не обновляете пароль при редактировании пользователя:)

1 голос
/ 21 мая 2011

Возможно, вы могли бы случайно сгенерировать пароль и вообще не требовать его.

Или вы можете удалить атрибут requred и вручную проверить, присутствует ли он на стороне сервера.

    if (string.IsNullOrEmpty(user.Password))
            ModelState.AddModelError("Password","A password is required");

Для проверки клиентской части, если вы используете проверку jquery: Документы JQuery

0 голосов
/ 21 мая 2011

Если у вас есть отдельные представления для Student добавления и редактирования, альтернативное решение будет:

  1. Создайте класс StudentViewModel, который содержит все свойства, необходимые как для добавления и редактирования Student, так и для

  2. Создайте класс StudentAdditionViewModel (необязательно производный от StudentViewModel), который включает свойство Password.

Затем можно использовать StudentAdditionViewModel в качестве модели добавления представления и StudentViewModel в качестве модели редактирования представления:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...