ASP.NET MVC5在视图

时间:2017-04-14 21:02:46

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

我有一个集合,我在控制器MenuitemDetails中填充,这会在视图模型上填充一个属性。

该集合有3个属性和多个记录 Id,Title和State

State是一个整数值,它与下拉列表选择的值有关。

viewmodel还包含一个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>

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

2 个答案:

答案 0 :(得分:0)

不是传入viewmodel中的选择列表,而是可以在剃刀视图中创建它,这样你就可以使用重载来创建选择列表来确定要绑定的值。

在我使用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)))

答案 1 :(得分:0)

你也可以尝试使用editortemplate来做这样的事情:

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

                       })
                       .Enable(true)
                       .AutoBind(true)
  )

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