gpt4 book ai didi

c# - 从 EntityContext 获取 List 的 ASP.NET Mvc 最佳方法?

转载 作者:行者123 更新时间:2023-12-02 04:55:15 25 4
gpt4 key购买 nike

我正在使用 EntityFramework 作为数据访问,以便在 asp.net mvc Web 应用程序中为我的最终用户查看国家/地区的下拉列表。

实现这一点并不难,但我很难找到一种好看的方法。

但首先是一些代码:

<td>
@Html.DropDownListFor(x => x.ParentId, repos.GetParents(@Model.ParentId)
</td>

在真实代码的深处:

class dummy
{
public string Text { get; set; }
public int Value { get; set; }
}

private SelectList _parents;
public SelectList Parents
{
get
{
if (_parents == null)
{
var parents = Entities.Instance.Partners.Select(x => new dummy() { Text = x.Name, Value = x.Id }).OrderBy(x => x.Text).ToList();
parents.Insert(0, new dummy());

_parents = new SelectList(parents, "Value", "Text");
}
return _parents;
}
}

public SelectList GetParents(int? parentId)
{
if (parentId != 0 && parentId.HasValue)
{
//setSelected
}
return Parents;
}

如您所见,我创建了一个** 虚拟类,仅用于复制数据!为什么?因为 x.Id.ToString 或等效方法在 linq to entity 中不起作用......

仍然有类似 SqlFunctions.Tostring((double)x.ID) 的东西,这不是完美的解决方案,但很好。至少直到我看到它使 Id 4 变成了这样的 string:"*lotsofspaces*4"并且修剪每个值太多了,不能被认为是对我来说好的解决方案。

最美的代码方案是这样的:

new SelectList(Entities.Instance.Partners, "Id", "Name");

美不美? :)不,这不对!因为它选择了来自合作伙伴的全部数据——而不仅仅是 ID 和名称列。

所以我的问题是:当我的 valueField 是一个 int 值类型时,您能告诉我一个简洁美观的方法来从下拉列表中的 EntityFrame 获取我的数据吗?

最佳答案

new SelectList(Entities.Instance.Partners.Select(o => new { Id = o.Id, Name = o.Name }).ToList(), "Id", "Name");

关于c# - 从 EntityContext 获取 List<SelectListItem> 的 ASP.NET Mvc 最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18107252/

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