【问题标题】:List<SelectListItem> Selected Value Not Showing for @Html.DropDownListForList<SelectListItem> 选择的值未显示为 @Html.DropDownListFor
【发布时间】:2020-10-13 20:37:44
【问题描述】:

我有一个剃须刀页面。在加载时,它会通过以下函数并创建一个 SelectListItem 列表:

        List<SelectListItem> groups = new List<SelectListItem>();
        for (int i = 0; i < Model.List.key.Count(); i++)
        {
            bool selected = false;
            if(Model.List.key[i] == Model.rkey)
            {
                selected = true;
            }
            groups.Add(new SelectListItem
            {
                Text = Model.List.description[i],
                Value = Model.List.key[i].ToString(),
                Selected = selected
            });
        }

当键匹配时,它正确地将 Selected 值设置为 true,但是它没有显示选定的值:

@Html.DropDownListFor(model => Model.groupTypeList, groups, new { @class = "form-control", onchange = "chosenGroup(this.value)", id = "groupTypeList" })

上面的 ddl 显示了所有添加的值,但没有设置为 Selected 值。我尝试了以下方法,但随后两次显示所选值:

@Html.DropDownListFor(model => Model.groupTypeList, groups, groups.First(x => x.Selected == true).Text, new { @class = "form-control", onchange = "chosenGroup(this.value)", id = "groupTypeList" })

【问题讨论】:

  • 可以显示型号代码吗?

标签: c# .net razor


【解决方案1】:

你可以试试这个:

型号:

public class Group
{
    public IEnumerable<Key> List { get; set; }

    public int rkey { get; set; }
}

public class Key
{
    public int key { get; set; }

    public string desc { get; set; }
}

动作控制器:

public ActionResult Index()
{
    Group g = new Group
    { 
        List = new List<Key>() 
        { 
            new Key { key = 1, desc = "Test" } ,
            new Key { key = 2, desc = "Test2" },
            new Key { key = 3, desc = "Test3" },
            new Key { key = 4, desc = "Test4" },
            new Key { key = 5, desc = "Test5" }
        } 
    };

    g.rkey = 4;

    return View(g);
}

查看:

@model WebMVC.Models.Group

<div> 

    @{

        List<SelectListItem> groups = new List<SelectListItem>();

        for (int i = 0; i < Model.List.Count(); i++)
        {
            bool selected = false;

            if (Model.List.ElementAt(i).key == Model.rkey)
            {
                selected = true;
            }

            groups.Add(new SelectListItem {  Text = Model.List.ElementAt(i).desc, Value = Model.List.ElementAt(i).key.ToString(), Selected = selected });
        }

    }

    <label>Select option:</label>

    @Html.DropDownList("MyDropDownList", groups, null, new { @class = "form-control", onchange = "chosenGroup(this.value)", id = "groupTypeList" })

</div>

另一种方法是直接使用DropdownListFor,而不在视图中进行剃刀验证:

@Html.DropDownListFor(x => x.rkey, new SelectList(Model.List, "key", "desc"), null, new { @class = "form-control", onchange = "chosenGroup(this.value)", id = "groupTypeList" })

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    相关资源
    最近更新 更多