如何使用AspNetCore 2.1在视图模型中访问DbContext?

时间:2018-09-29 19:41:44

标签: entity-framework-core viewmodel dbcontext asp.net-core-2.1

当您要在数据库中保存ID的同时显示说明时,通常使用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>

在ViewModel中以这种方式使用_context是否正确,或者还有其他方法可以使同一件事做得更好(也许是DI?)

1 个答案:

答案 0 :(得分:0)

在实例化视图模型后(或在初始化期间)设置属性,例如:

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

return View( vm );