gpt4 book ai didi

c# - 使用扩展方法进行下拉

转载 作者:太空宇宙 更新时间:2023-11-03 12:38:44 26 4
gpt4 key购买 nike

我目前正在开发一个具有创建和编辑 View 的 MVC 应用程序。这两个 View 在 UI 方面非常相似。在每个页面上,我都有大约 5-7 个下拉菜单,我借助以下扩展方法将其填充到 Controller 中。

public static IEnumerable<SelectListItem> ToSelectListItems<T>(this IEnumerable<T> items, Func<T, string> textSelector, Func<T, string> valueSelector)
{
return items.OrderBy(item => textSelector(item))
.Select(item =>
new SelectListItem
{
Text = textSelector(item),
Value = valueSelector(item)
});
}

现在在编辑 View 上,我想显示相同的下拉菜单,但这次将所选值设置为 true,以适应用户在创建 View 上选择的任何内容。这就是我目前的做法

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

foreach (var items in GetUserDropDown(userId, userName))
{
userDdl.Add(new SelectListItem { Value = items.Value, Text = items.Text });
}

userDdl.Where(a => a.Value == someValueFromDb).First().Selected = true;

这行得通,但我在想是否有更好的方法来解决这个问题,或者我是否坚持这样做

最佳答案

我想出了一些办法。我为 ToSelectListItems 方法创建了一个重载,如下所示:

public static IEnumerable<SelectListItem> ToSelectListItems<T>(this List<T> items, Func<T, string> nameSelector, Func<T, string> valueSelector, Func<T, bool> selecter)
{
return items
.OrderBy(item => nameSelector(item))
.Select(item =>
new SelectListItem
{
Selected = selecter(item),
Text = nameSelector(item),
Value = valueSelector(item)
});
}

现在我可以:

List<SelectListItem> userDdl = GetUserDropDown(userId, userName).ToSelectListItems(a => a.UserName, a => a.UserId.ToString(), a => a.UserId.ToString() == userIdFromDb).ToList();

关于c# - 使用扩展方法进行下拉,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39890234/

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