加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 列表中的MVC4绑定下拉列表(bug)

发布时间:2020-12-16 09:48:58 所属栏目:asp.Net 来源:网络整理
导读:我在视图中有以下代码. (index.cshtml) 约束问题 第一个下拉列表根据’ChildItem’编辑器模板选择正确的值. 使用内联下拉列表的第二个示例不起作用我不想创建一个编辑器模板只是为了显示下拉值. 奇怪的是TextBoxFor将显示正确的值.这似乎只是下拉列表中的一
我在视图中有以下代码. (index.cshtml)

约束问题

>第一个下拉列表根据’ChildItem’编辑器模板选择正确的值.
>使用内联下拉列表的第二个示例不起作用我不想创建一个编辑器模板只是为了显示下拉值.
>奇怪的是TextBoxFor将显示正确的值.这似乎只是下拉列表中的一个问题.

如何修复绑定以便第二次下拉工作?我调试了它.看来ViewData.Eval没有从_.Children [i] .ChooseId中获取正确的值.

更新(错误)
这是MVC框架http://aspnet.codeplex.com/workitem/8311中确认的错误(低优先级,如何?)

@using (Html.BeginForm())
{
    for (int i = 0; i < Model.Children.Count(); i++)
    {
       <p>A: @Html.EditorFor(_ => _.Children[i],"ChildItem")</p>
       <p>B: @Html.DropDownListFor(_ => _.Children[i].ChooseId,TestModel.PeopleSelect)</p>
    }
    <button type="submit">GO</button>
}

我尝试过使用DropDownListFor(_ => Model.Children [i] .ChooseId),结果相同.
使用TextBoxFor(_ => _.Children [i] .ChooseId)显示正确的值,wierd?

这里参考的是ChildItem.cshtml

@using dropdown.Controllers
@using dropdown.Models
@model dropdown.Models.TestPerson
@Html.DropDownListFor(_ => _.ChooseId,TestModel.PeopleSelect)

它看起来像这样:

解决方法

我后来发现了这个: http://aspnet.codeplex.com/workitem/8311
这是一个确认的错误.

我找到的唯一解决方法就是这个.

标记所选项目

@ Html.DropDownListFor(_ => _.Children [i] .ChooseId,Mark(TestModel.PeopleSelect,Model.Children [i] .ChooseId))

标记功能/扩展方法

@functions {
    private IEnumerable<SelectListItem> Mark(IEnumerable<SelectListItem> items,object Id)
    {
        foreach (var item in items)
            if (string.CompareOrdinal(item.Value,Convert.ToString(Id)) == 0)
                item.Selected = true;
        return items;
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读