Добрый день! IdUser IdRole Login Password @u.IdUser @u.IdRole @u.Login @u.Password
При написании приложения на MVC возникла следующая ситуация: У меня есть в базе данных таблица User, в которой есть поле IdRole, которое может быть null. Класс-модель для таблицы User выглядит так (эта модель сгенерировалась с помощью ADO.NET):
[Table("risksdb.user")]
public partial class user
{
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
public user()
{
risk_record = new HashSet
[Key]
public int IdUser { get; set; }
public int? IdRole { get; set; }
[Required]
[StringLength(45)]
public string Login { get; set; }
[Required]
[StringLength(45)]
public string Password { get; set; }
[System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
public virtual ICollection
public virtual role role { get; set; }
}
Как видно, свойство Role может принимать null. Для вывода таблицы user, я использую ViewBag, который является dynamic. В него (ViewBag.Users)я помещаю IEnumerable
@foreach (var u in ViewBag.Users)
{
}
Вопрос: Нужно ли делать проверку на null для поля переменной типа dynamic или нет? Если да, то как правильно сделать это и где (в контроллере или еще где-то)?
Доп. вопрос: Как лучше передавать в cshtml-файл модель: через ViewBag или через параметр object model?
Ответ
1) Зависит от того, может быть у этой переменной значение null или нет. Если в контроллере всегда безусловно что-то присваиваете ViewBag.Users, то и над проверкой заморачиваться ни к чему.
Проверку нужно проводить там, где может возникнуть ошибка. Например, в представлении ошибка может возникнуть в цикле foreach, если ViewBag.Users будет равен null
2) Конечно же через object model. Это удобный и общепринятый механизм. Достаточно в представлении (cshtml-файл) добавить строку @model IEnumerable
Комментариев нет:
Отправить комментарий