gpt4 book ai didi

asp.net-mvc-3 - MVC3下拉列表未选择所选项目

转载 作者:行者123 更新时间:2023-12-04 17:12:08 27 4
gpt4 key购买 nike

我有一个 C#.Net MVC3 Web 应用程序。我到处都在使用下拉列表并取得了成功。但是,有两个我遇到了麻烦。唯一的区别是我正在创建 SelectLists在代码中即时而不是使用查找表。我对所有其他下拉列表使用查找表。当我快速观看 SelectLists在代码中,正确的项目有 Selected属性值设置为 true .但是,当页面加载时,带有 Selected 的项目属性不显示。第一项是。有任何想法吗?这是其中之一。下面两种方法我都试过了。在这两种情况下, ViewBag.DateToYear 和 SelectList DateToYear 都具有正确的值和“Selected”属性集

1)

// Controller

        IList<string> dateToYear = new List<string>();
for (int i = 0; i < numberYears; i++)
{
dateToYear.Add(DateTime.Now.AddYears(i).Year.ToString());
}
ViewBag.DateToYear = new SelectList(dateToYear,"2014")

//看法
        @Html.DropDownList("DateFromYear", (SelectList)ViewBag.DateToYear )

2)
// Controller
同上

//看法
List<SelectListItem> DateToYear = new List<SelectListItem>();
foreach (var m in ViewBag.DateToYear)
{
DateToYear.Add(new SelectListItem { Selected = @m.Selected, Value = @m.Text, Text = @m.Text });
}

@Html.DropDownList("DateFromYear", DateToYear)

最佳答案

问题是, SelectList 按设计工作。错误在于设计。您可以在 SelctedItem 中设置 Selected 属性,但是如果您使用 GetEnumerator() 遍历列表(或者如果 Mvc 为您执行此操作),这将完全被忽略。 Mvc 将创建新的 SelectfListItems。

您必须将 SelectList ctor 与 SelectListItem[]、Text-Name、Value-Name 和 SelectedValue 一起使用。请注意将要被选择的 SelectListItem 的 VALUE 作为 SelectedValue 传递,而不是 SelectListItem 本身!例子:

为什么不直接在 Controller 中做呢?

伪代码:

// Controller

ViewBag.DateToYear = new SelectList(new[]  
{
new SelectListItem { Text = "10", Value = "10" },
new SelectListItem { Text = "15", Value = "15" }
new SelectListItem { Text = "25", Value = "25" },
new SelectListItem { Text = "50", Value = "50" },
new SelectListItem { Text = "100", Value = "100" },
new SelectListItem { Text = "1000", Value = "1000" },
}, "SomeText", "Value", "15");

应该选择第二个选项。

关于asp.net-mvc-3 - MVC3下拉列表未选择所选项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8158986/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com