gpt4 book ai didi

c# - MVC SelectList 中的 LINQ 查询结果作为值和文本 - 不起作用

转载 作者:太空狗 更新时间:2023-10-29 20:54:37 24 4
gpt4 key购买 nike

我正在尝试使用 LINQ 查询的结果来填充 MVC 5 应用程序中的 SelectList。LINQ 查询返回客户 ID。

型号

public partial class Pricelist
{
public int CustomerID { get; set; }
public int SelectedCustomer { get; set; }

public Pricelist(int customerID, int selectedCustomer)
{

}
}

查看

@Html.DropDownList("custList")

Controller (1)

var query = ((from s in db.Pricelists
select s.CustId).Distinct()).ToList();

int i = 1;
List<Pricelist> CustomerList = new List<Pricelist>();
foreach (var c in query)
{
int cust = c;
Pricelist p = new Pricelist(i, cust);
CustomerList.Add(p);
i++;
}

SelectList custList = new SelectList(CustomerList);
ViewBag.custList = custList;

return View();

它返回一个下拉列表,其中填充了模型类名称(如果我尝试在 foreach 中返回 i 和 cust .ToString() ,我会得到一个异常。)我尝试这样做是因为下面的 Controller 方法生成了不同 CustomerID 的列表,但在发布时返回 NULL(我认为是因为 SelectList 中没有指定值)

public ActionResult Create()
{
var query = (from s in db.Pricelists
select s.CustId).Distinct();

SelectList CustomerList = new SelectList(query);

ViewBag.custList = CustomerList;

return View();
}

指出我哪里出错了,以及如何进行非常感谢。

最佳答案

最简单的方法是让 Razor 担心 SelectList然后给它一个IEnumerable<SelectListItem> .

ViewBag.custList = CustomerList.Select(m => new SelectListItem { Value = m.Id, Text = m.Name });

那么在你看来:

@Html.DropDownListFor(m => m.SomeField, (IEnumerable<SelectListItem>)ViewBag.custList)

您可以使用强类型 View 模型来代替 ViewBag,从而使它变得更好.你真的应该避免 ViewBag尽可能多。

关于c# - MVC SelectList 中的 LINQ 查询结果作为值和文本 - 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21939093/

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