Как получить доступ к DbContext в viewmodel с AspNetCore 2.1? - PullRequest
0 голосов
/ 29 сентября 2018

Использование полей ввода DropDown очень распространено, когда вы хотите отобразить описание при сохранении идентификатора в вашей базе данных.Если я рассматриваю свою модель Person, у меня есть PersonViewModel, у которого есть SelectList, используемый для отображения списка возможных описаний вакансий

    public SelectList SelectJobDescription
    {
        get
        {
            MyDbContext _context = new MyDbContext();
            var result = new SelectList(_context.Keywords
                                    .Where(k => k.Name == ".JobDescription")
                                    .OrderBy(r => r.Valuename), "Valuecode", "Valuename");
            _context.Dispose();
            return result;
        }
    }

, и я использую этот SelectList в моих представлениях создания / редактирования, например:

        <div class="form-group row">
            <label asp-for="JobDescription" class="col-sm-4 col-form-label"></label>
            <div class="col-sm-8">
                <select asp-for="JobDescription" asp-items="@Model.SelectJobDescription" class="form-control">
                    <option>Select a Job Description</option>
                </select>
        </div>

Правильно ли использовать _context таким образом в ViewModel или есть какой-то другой способ сделать то же самое лучше (возможно, DI?)

1 Ответ

0 голосов
/ 30 сентября 2018

Установите свойство после установки модели представления (или во время инициализации), например:

var vm = new YourViewModel()
{
    SelectJobDescription = new SelectList( _context... ),
};

return View( vm );
...