大佬教程收集整理的这篇文章主要介绍了Entity Framework Core 应用程序 - 如何在“创建和编辑”页面中显示从相关模型填充到当前模型的下拉列表,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在使用 ENtity Framework Core 创建一个 ASP.NET Core (MVC) 站点,其中包含产品、品牌表。每个 Product 都必须有一个 Brand,因此 Products 表有一个 BrandID 字段,它是 Brands 表的键。
在我为创建和编辑产品所做的简单管理中,我想显示一个包含品牌表中所有品牌名称的下拉菜单。
我的创建页面有一个 BrandID 字段,使用以下内容:
<label asp-for="BrandID" class="control-label"></label>
<input asp-for="BrandID" class="form-control" />
<span asp-valIDation-for="BrandID" class="text-danger"></span>
控制器动作如下所示:
public async Task<IActionResult>Create([Bind("ID,name,Description,BrandID")] Product product)
{
if (ModelState.IsValID)
{
_context.Add(product);
await _context.SaveChangesAsync();
return RedirectToAction(nameof(IndeX));
}
return VIEw(product);
}
在我的产品列表页面上显示名称没有问题,因为我可以通过我的索引控制器操作访问每个产品的品牌名称,如下所示:
public async Task<IActionResult> Index()
{
return VIEw(await _context.Products.Include(b => b.brand)
.AsnoTracking().ToListAsync());
}
那么,我的问题是,在我的 Brands 表中显示带有完整品牌名称列表的下拉列表而不是仅用于 BrandID 的文本框的最佳方式是什么?
您可以使用 for-each 循环并通过 ViewBag 从控制器移交数据:
public async Task<IActionResult> OnGetAsync(int? id)
{
var Product = await _context.Product.FirstOrDefaultAsync(p => p.productID == id).Include(p => p.brand);
... //Your previous code
ViewBag.brands = new SELEctList(_context.brands.ToList(),'ID','Name');
//for edit make sure to set the current element as SELEcted
var SELEcted = list.Where(brand => brand.brandID== Product.brand.brandID).First();
SELEcted.SELEcted = true;
return View(product);
}
<SELEct asp-for="BrandID"
asp-items="@(ViewBag.brands)">
<!--Not for edit:-->
<option disabled SELEcted>Please SELEct one</option>
</SELEct>
</SELEct>
以上是大佬教程为你收集整理的Entity Framework Core 应用程序 - 如何在“创建和编辑”页面中显示从相关模型填充到当前模型的下拉列表全部内容,希望文章能够帮你解决Entity Framework Core 应用程序 - 如何在“创建和编辑”页面中显示从相关模型填充到当前模型的下拉列表所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。