gpt4 book ai didi

c# - 在 ASP.NET Core 中显示 SelectList 中的数据

转载 作者:太空狗 更新时间:2023-10-29 22:21:34 25 4
gpt4 key购买 nike

我尝试了几种不同的方法。我不确定为什么,但我的 SelectList/DropDown 是空的。它没有显示任何数据。我不确定哪里出错了。

我有一个 ASP.NET Core 应用程序。 Entity Framework 核心。数据库优先。我正在使用存储库模式。

这是我的模型类

public partial class Commodity
{
public Guid Oid { get; set; }
public string Code { get; set; }
}

这是我的界面:

interface ICommodityRepository
{
IEnumerable<Commodity> GetAll();
}

我的仓库:

public class CommodityRepository : ICommodityRepository
{
private ltgwarehouseContext context;

public CommodityRepository()
{ }

public IEnumerable<Commodity> GetAll()
{
return context.Commodity.ToList();
}
}

我的 Controller :

public class CommoditiesController : Controller
{
static readonly CommodityRepository commodities = new CommodityRepository();

public CommoditiesController(CommodityRepository commodities)
{ }

// GET: /<controller>/
public IEnumerable<Commodity> CommoditiesList()
{
return commodities.GetAll();
}
}

这是我的 View /HTML 标记:

@model Lansing.BasisMap.Domain.Models.Commodity

<li><select asp-for="@Model.Code" asp-controller="Commodities" asp-action="CommoditiesList"></select> </li>

最佳答案

(我不太熟悉 ASP.NET Core 中的 Tag Helper 语法,但我会试一试,如果我错了,请大家纠正我)

  • asp-for=""属性不需要 @前缀,因为它不是 Razor 代码,属性值已由 ASP.NET 的解析器处理 - 只有在使用与 HTML 不明确的 C# 语法(例如双引号)时才需要它。
  • asp-controllerasp-action属性不适用于 <select>
  • 您没有为您的 <select> 提供任何选项, 使用 asp-items属性并提供 IEnumerable<SelectListItem>SelectList实例。这可以通过您的 ViewModel 传入或者(我的偏好)通过 ViewData (或 ViewBag )。

假设它是 ViewData ,然后:

public ActionResult YourControllerAction() {

// stuff
this.ViewData["items"] = commodities
.GetAll()
.Select( c => new SelectListItem() { Text = c.Code, Value = c.Oid.ToString() } )
.ToList();

// stuff
return this.View( viewModel );
}

然后像这样在 View 中使用它:

<select asp-for="Model.Code" asp-items="@ViewData["items"]" />

此 QA 帖子中有更多示例:Select Tag Helper in ASP.NET Core MVC

关于c# - 在 ASP.NET Core 中显示 SelectList 中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39835452/

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