gpt4 book ai didi

asp.net-mvc - 如何编写 C# 扩展方法将域模型对象转换为接口(interface)对象?

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

当您有一个需要显示为界面控件的域对象时,如下拉列表,ifwdev建议创建一个扩展方法来添加一个 .ToSelectList()。

原始对象是具有与下拉列表的 .Text 和 .Value 属性相同的属性的对象列表。基本上,它是一个 SelectList 对象的列表,只是类名不同。

我想您可以使用反射将域对象转换为接口(interface)对象。有人对可以做到这一点的 C# 代码有任何建议吗? SelectList 是一个 MVC 下拉列表的 SelectListItem。

这个想法当然是在 View 中做这样的事情:

<%= Html.DropDownList("City", 
(IEnumerable<SelectListItem>) ViewData["Cities"].ToSelectList() )

最佳答案

制作 SelectList 更容易您的 ViewModel 的一部分目的。

无论如何,您只需要遍历 IEnumerable并将每个项目添加到新的 SelectList对象并返回它。

public static List<SelectListItem> ToSelectList<T>(this IEnumerable<T> enumerable, Func<T, string> text, Func<T, string> value, string defaultOption) 
{
var items = enumerable.Select(f => new SelectListItem() { Text = text(f), Value = value(f) }).ToList();
items.Insert(0, new SelectListItem() { Text = defaultOption, Value = "-1" });
return items;
}

How to refactor these 2 similar methods into one?

关于asp.net-mvc - 如何编写 C# 扩展方法将域模型对象转换为接口(interface)对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2588595/

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