C# 6.0. Elvis-оператор для переменных типа dynamic

287
11 мая 2017, 10:15

Добрый день!

При написании приложения на 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<risk_record>();
    }
    [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<risk_record> risk_record { get; set; }
    public virtual role role { get; set; }
}   

Как видно, свойство Role может принимать null. Для вывода таблицы user, я использую ViewBag, который является dynamic. В него (ViewBag.Users)я помещаю IEnumerable<user> Users в своем контроллере и в cshtml-файле я вывожу его примерно так:

<tr> 
    <td><p>IdUser</p></td> 
    <td><p>IdRole</p></td> 
    <td><p>Login</p></td> 
    <td><p>Password</p></td> 
</tr> 
@foreach (var u in ViewBag.Users) 
{ 
    <tr> 
        <td><p>@u.IdUser</p></td> 
        <td><p>@u.IdRole</p></td> 
        <td><p>@u.Login</p></td> 
        <td><p>@u.Password</p></td> 
    </tr> 
}

Вопрос: Нужно ли делать проверку на null для поля переменной типа dynamic или нет? Если да, то как правильно сделать это и где (в контроллере или еще где-то)?

Доп. вопрос: Как лучше передавать в cshtml-файл модель: через ViewBag или через параметр object model?

READ ALSO
Как вывести данные из txt-файла на DataGrid?

Как вывести данные из txt-файла на DataGrid?

Доброго времени суток

290
Интервал слайдера WPF

Интервал слайдера WPF

Как задать слайдеру интервал например от 10 до 20Когда слайдер будет в самой левой части, то значение будет 10

334
Разделение IdentityDbContext и DbContext - нужно ли?

Разделение IdentityDbContext и DbContext - нужно ли?

Вопрос заключается в следующемЯ пишу небольшое приложение на

349
данные из бд в лист

данные из бд в лист

Подскажите, пожалуйста, как данные из определенного столбца таблицы преобразовать в лист

326