ASP MVC EF6访问外键表作为列表

时间:2016-10-10 10:59:55

标签: asp.net-mvc entity-framework razor

我有两个表,代码和国家/地区,在countries.id上的codes.countryid上有外键约束 - 我正在使用visual studio 15中的控制器mvc设置给出的基本crud但是想要替换文本使用select for countryid输入,以便用户可以从下拉列表中选择一个国家/地区作为输入id作为int。

如何通过提供的模型访问国家/地区列表?以下示例剃刀代码。我是否需要从其他模型获取国家/地区列表?

<div class="form-group">
            <label for="CountryId" class="control-label col-md-2">Country</label>
            <select name="CountryId" class="form-control" required>
                <option value="">Please select ...</option>
 /* Model.Countries is not available even after a foreignkey constraint? */
                @foreach(var i in Model.Countries)
                {
                    <option value="@i.id">@i.Name</option>
                }
            </select>
            @Html.ValidationMessageFor(model => model.CountryId, "", new { @class = "text-danger" })
            @Html.LabelFor(model => model.CountryId, htmlAttributes: new { @class = "control-label col-md-2" })
        </div>

1 个答案:

答案 0 :(得分:0)

您应该在控制器操作中使用国家/地区列表设置ViewBag变量。

假设您的控制器中有一个数据库上下文,您应该将以下代码放在您的操作中

ViewBag.CountriesList = new SelectList(_context.countries.ToList(), "Id", "Name");

在视图中使用如下

 @Html.DropDownListFor(a => a.countryId, (SelectList)ViewBag.CountriesList , htmlAttributes: new { @class = "form-control" })