简单的静态下拉示例

时间:2014-01-06 21:23:19

标签: c# asp.net asp.net-mvc entity-framework scaffolding

我正在学习使用Scaffolding的ASP.NET MVC 5 EF,我正在尝试提出一个简单的静态下拉选项列表。

我有一个客户,想要一个下拉选择状态列表。现在,我希望列表是硬编码的。

到目前为止,我已经弄清楚如果我创建一个具有“StateID”属性的State模型类,并将相同的StateID添加到我的Client类,脚手架将其识别为外键。但是,下拉列表中没有选择。

public string stateID { get; set; }

我认为我的问题是如何在脚手架的某处填充状态对象列表。我可以找到的所有在线示例都是向控制器或视图添加代码。那里的问题是,当我从模型中重新生成脚手架时,我的视图和控制器代码将重新生成。这就是我想要的,我只需要知道如何填充模型中的静态数据,或类似的?

我尝试根据一些研究创建这个类,但我认为它不正确,或者我需要以某种方式在我的Clinet模型中调用GetStates()?

public class State
    {
        public string StateID { get; set; }
        public string Name { get; set; }

        public static IQueryable<State> GetStates()
        {
            return new List<State>
            {
                new State {
                    StateID = "MA",
                    Name = "Massachusetts"
                },
                new State{
                    StateID = "CT",
                    Name = "Conneticuit"
                },
                new State{
                    StateID = "RI",
                    Name = "Rhode Island"
                },
                new State{
                    StateID = "NH",
                    Name = "New Hampshire"
                }
            }.AsQueryable();
        }
    }

这是自动生成的脚手架视图(我认为我不应该修改,以便我能够重新构建脚手架):

@model IEnumerable<MBDApp.Models.Client>

@{
    ViewBag.Title = "Index";
}

<h2>Index</h2>

<p>
    @Html.ActionLink("Create New", "Create")
</p>
<table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.firstName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.lastName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.StateID)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.firstName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.lastName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.StateID)
        </td>
        <td>
            @Html.ActionLink("Edit", "Edit", new { id=item.id }) |
            @Html.ActionLink("Details", "Details", new { id=item.id }) |
            @Html.ActionLink("Delete", "Delete", new { id=item.id })
        </td>
    </tr>
}

</table>

0 个答案:

没有答案