【问题标题】:ASP.NET MVC5 setting dropdown list value within a loop on the ViewASP.NET MVC5 在视图上的循环内设置下拉列表值
【发布时间】:2017-04-14 21:02:46
【问题描述】:

我在控制器 MenuitemDetails 中填充了一个集合,它填充了视图模型上的一个属性。

集合有 3 个属性和多条记录 身份、职务和国家

State 是一个整数值,与下拉列表中的选定值相关。

视图模型还包含一个 selectList 属性 (stateList),用于填充视图上的下拉列表项。

我正在尝试重新填充表单以进行编辑操作 - 使用相同的下拉项目选择

 <table>
        @for (int counter = 0; counter < Model.MenuitemDetails.Count; counter++)
        {                
            <tr>
                <td>
                    @Model.MenuitemDetails[counter].Title
                    @Html.DropDownListFor(i => Model.MenuitemDetails[counter].state, Model.stateList)                        
                </td>
                <hr />
            </tr>
        }                
    </table>

我似乎无法获取下拉列表的值来显示所选的适当值。

【问题讨论】:

    标签: asp.net-mvc-4 html.dropdownlistfor


    【解决方案1】:

    与其在视图模型中传递选择列表,不如在剃刀视图中创建它,这样您就可以使用重载来创建选择列表来确定要绑定的值。

    在示例中,我使用的是 Telerik mvc 下拉列表,但同样适用于在剃须刀中创建 selectList 以及绑定的属性将确定其状态。

               @(Html.Kendo().DropDownListFor(m => m.Entity.ProductId)
                                          .DataTextField("Text")
                                          .DataValueField("Value")
                                          .Filter("contains")
                                          .HtmlAttributes(new { @class = "form-control" })
                                          .BindTo(new SelectList(Model.Products, "Id", "FullName", Model.Entity.ProductId)))
    

    【讨论】:

      【解决方案2】:

      您也可以尝试使用编辑器模板来处理此类事情:

      @(Html.Kendo().DropDownListFor(m => m)
                             .OptionLabel("--Select Value--")
                             .DataSource(source =>
                             {
                                 source.Read(read =>
                                 {
                                     read.Action("MethodName", "ControllerName").Data("dataforMethod");
                                 });
      
                             })
                             .Enable(true)
                             .AutoBind(true)
        )
      

      在读取的 .Data() 部分中,仅当您有一些参数需要函数来获取数据集时才需要使用它

      【讨论】:

        猜你喜欢
        • 2014-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-02-24
        • 2019-08-29
        • 1970-01-01
        • 1970-01-01
        • 2016-11-16
        相关资源
        最近更新 更多