来自数据库的数据不能显示在 ASP.NET MVC 的下拉列表中
Posted
技术标签:
【中文标题】来自数据库的数据不能显示在 ASP.NET MVC 的下拉列表中【英文标题】:Data that comes from database can not shown in drop down list in ASP.NET MVC 【发布时间】:2021-06-03 22:50:33 【问题描述】:我正在开发一个 ASP.NET MVC 项目。我正在尝试在添加和编辑页面上添加主详细信息。但是当我想编辑一条记录时,“纱线下拉列表”为空,但是当我调试项目数据时,项目数据正确来自数据库。我没有弄清楚这个问题。 Yarn 和 Yarn Detail 表之间的一对多关系,以及
//编辑页面
<table>
<tr>
<th>Yarn Name</th>
<th>Unit Price of Yarn</th>
<th>Percentage of Using</th>
<th></th>
</tr>
@ int i = 0;
@foreach (var x in Model.YarnDetails)
<tr>
<td>
@html.DropDownListFor(model => x.YarnID , ViewBag.YarnList as SelectList, "--select--", new @class = "form-control", @Name = "[" + i + "].YarnID" )
</td>
<td>
@Html.HiddenFor(model => x.YarnDetailID, new @Name = "[" + i + "].YarnDetailID" )
<input type="button" value="Remove" class="remove" />
</td>
</tr>
i++;
</table>
//控制器部分
public ActionResult Edit(int FabricCostCalcID)
var fabCo = _context.FabricCostCalcs.SingleOrDefault(c => c.FabricCostCalcID == FabricCostCalcID && c.IsDeleted == false);
List<Fabric> fabriclist = _context.Fabrics.Where(x => x.IsDeleted == false).OrderBy(y => y.FabricName).ToList();
List<KnittingOption> knittinglist = _context.KnittingOptions.Where(x => x.IsDeleted == false).OrderBy(y => y.KnittingName).ToList();
List<Yarn> yarnList = _context.Yarns.Where(x => x.IsDeleted == false).OrderBy(y => y.YarnName).ToList();
ViewBag.YarnList = new SelectList(yarnList, "YarnID", "YarnName");
ViewBag.FabricList = new SelectList(fabriclist, "FabricID", "FabricName");
ViewBag.KnitingList = new SelectList(knittinglist, "KnittingOptionID", "KnittingName");
return PartialView("_EditPartial", fabCo);
[HttpPost]
public ActionResult Edit(FabricCostCalc fabricCost, List<YarnDetail> yarnDetails)
_context.Entry(fabricCost).State = EntityState.Modified;
foreach (var yar in yarnDetails)
yar.FabricCostCalcID = fabricCost.FabricCostCalcID;
_context.Entry(yar).State = EntityState.Modified;
_context.SaveChanges();
return RedirectToAction("Index");
//前端屏幕截图
//DATABESE
提前谢谢你
【问题讨论】:
【参考方案1】:我明白你想要做什么。如果你这样做会更好:
@for (int i = 0; i < Model.LSubCategories.Count(); i++)
<div class="col">
<label asp-for="SubCategory.CategoryID">Bulunacağı Kategori ?</label>
<div class="col">
<label asp-for="@Model.LSubCategories[i].CategoryID">Kategorisini seçiniz ?</label>
<select asp-for="@Model.LSubCategories[i].CategoryID" class="selectpicker" data- name="CategoryID" required>
<option value="">Seçiniz</option>
@foreach (var item in Model.LSubCategories)
<option value="@item.CategoryID">@item.CategoryName</option>
</select>
我希望你能理解我的代码。
如果你意识到我在不使用 @Html.DropDownListFor
的情况下做同样的事情。
如果你想调用相关数据,你可以在你的 ViewModel 中定义它。之后,您可以将其填写在您的控制器中:
var list = _unitOfWorkSCat.RepositorySubCategory.GetAll();
var listCat = _unitOfWorkCat.RepositoryCategory.GetAll();
var listL = _unitOfWorkSCat.RepositorySubCategory.GetAllAsList();
var SubCategory = new SubCategory();
var CategoryViewModel = new CategoryViewModel
SubCategories = list,
SubCategory = SubCategory,
LSubCategories = listL,
Categories = listCat
;
【讨论】:
其实这不是我想做的。我在我的“面料计算”中添加一种或多种纱线,就像在订单表中可以包含一种或多种产品一样。然后我计算价格并保存。但是,当我要编辑记录时,保存的数据不会显示在编辑页面中,而是其他数据来了。以上是关于来自数据库的数据不能显示在 ASP.NET MVC 的下拉列表中的主要内容,如果未能解决你的问题,请参考以下文章
无法在 asp.net mvc 中显示来自 s3 存储桶的上传图像
如何在 asp.net mvc 中显示来自 Amazon S3 的图像文件?
使用 knockoutjs 绑定来自 JSON 对象的数据 - Asp.net MVC