【问题标题】:ASP MVC3 - set drop down list for multiple itemsASP MVC3 - 为多个项目设置下拉列表
【发布时间】:2013-04-02 16:38:11
【问题描述】:

在我的 ASP MVC3 站点的编辑页面上,有一部分代码处理附加到每个模型项的动态数量的代理。下面的代码用于创建要显示的表格行的确切数量

    @for (int i = 0; i < Model.Fixed.Count; i++)
    {
        if(!String.IsNullOrWhiteSpace(Model.Fixed[i].AgentId))
        {
           <tr>
            <td>
                @Html.DropDownListFor(model => model.Fixed[i].StateCode,
                 (SelectList)ViewBag.StateCodeList)
            </td>
            <td>
                @Html.EditorFor(model => model.Fixed[i].AgentId)
                @Html.ValidationMessageFor(model => model.Fixed[i].AgentId)
            </td>
          </tr>                
        }
    }

很遗憾,我不确定如何显示与每个代理关联的属性状态代码。现在这段代码是控制器中唯一处理设置下拉列表值的区域:

        SelectList tmpList = new SelectList(new[] { "AL", "AK", "AS", "AZ", "AR", "CA", "CO", "CT", "DE", "DC", "FM", "FL", "GA", "GU", "HI", "ID", "IL", "IN", "IA", "KS", "KY", "LA", "ME", "MH", "MD", "MA", "MI", "MN", "MS", "MO", "MT", "NE", "NV", "NH", "NJ", "NA", "NM", "NY", "NC", "ND", "MP", "OH", "OK", "OR", "PW", "PA", "PR", "RI", "SC", "SD", "TN", "TX", "UT", "US", "VT", "VI", "VA", "WA", "WV", "WI", "WY" });
        ViewBag.StateCodeList = tmpList;

由于可能有 0 到 100 个代理,我遇到的问题是在它们各自的下拉框中显示与该特定代理关联的正确状态代码。

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-3 asp.net-mvc-2 html.dropdownlistfor


    【解决方案1】:

    我很快就发现了这个超载:

                    <td>
                      @Html.DropDownListFor(model => model.Fixed[i].StateCode,
                          (SelectList)ViewBag.StateCodeList, Model.Fixed[i].StateCode)
                    </td>
    

    【讨论】:

    • 您应该考虑将SelectList 移动到您的视图模型(如果不是,请使用视图模型)。应尽可能避免使用 ViewBag。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多