asp.net-mvc - 如何从 CREATE 记录的下拉列表中将当前选择的值保存到数据库
问题描述
在我的应用程序中使用 C#、ASP.NET MVC 和实体框架,我有一个下拉字段,其中包含值:lb、oz、g、kg。这些值来自我的 SQL 数据库中名为tblWeighUnits
. 这些单位将用于在创建产品时分配给产品。
当我创建一个新产品时,我WeightUnit
从填充的下拉列表中选择,tblWeightUnits
这样产品就可以有一个重量和正确的单位分配。
目前在我的产品控制器中,当我创建新产品记录时,无论我从下拉列表中选择了什么,数据库都会在tblWeightUnit
. 我不想为要创建的单位创建新记录,我只需要创建的产品具有我选择的单位。
目前,如果我尝试编辑WeightUnit
保存到产品中的内容,它可以正常工作。所以从技术上讲,我可以回去编辑以将其更改为 4 个单位之一。但是当我创建一个新产品时,它并没有考虑到我已经在下拉列表中所做的选择,它只是在tlbWeightUnit
表中创建了一个全新的空记录。
当前数据库关系设置如下:
tblProduct
有一个外键tblChannel
tblChannel
有一个外键tblWeightUnit
所以基本上在我的产品控制器中,当创建一个产品时,我希望能够说我正在创建的这个产品需要有WeightUnit
我从下拉列表中选择的那个。
我被卡住了,因为我不知道如何分配 from tblProduct
totblWeightUnit
因为那是tblChannel
表的 FK 而不是tblProduct
.
我应该在我的创建方法中包含什么来保存这个选择?我已经尝试了所有这些,但没有任何效果:
//tblProduct.tblChannel.WeightUnit_ID = tblProduct.tblChannel.WeightUnit_ID;
//tblProduct.tblGoogleChannel.WeightUnit_ID = tblChannel.WeightUnit_ID;
//tblChannel.WeightUnit_ID = tblGoogleChannel.tblWeightUnit.WeightUnit_ID;
//tblChannel.WeightUnit_ID = tblChannel.tblWeightUnit.WeightUnit_ID;
//tblChannel.WeightUnit_ID = tblChannel.WeightUnit_ID;
//tblProduct.tblChannel.WeightUnit_ID = 2;
//tblChannel.WeightUnit_ID = 2; This didnt save anything
//tblChannel.WeightUnit_ID = tblProduct.tblChannel.WeightUnit_ID;
tblChannel.WeightUnit_ID = tblWeightUnit.WeightUnit_ID;
以下代码是我ProductController
用于编辑功能的代码。
public ActionResult Edit(int? id)
{
ViewBag.DynamicLoadWeightUnit = db.tblWeightUnits.ToList();
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
tblProduct tblProduct = db.tblProducts.Find(id);
if (tblProduct == null)
{
return HttpNotFound();
}
ViewBag.ChannelRecord_ID = new SelectList(db.tblChannels, "ChannelRecord_ID", "ChannelRecord_ID", tblProduct.ChannelRecord_ID);
ViewBag.DynamicLoadWeightUnit = db.tblWeightUnits.ToList();
return View(tblProduct);
}
public ActionResult Edit([Bind(Include = "ChannelRecord_ID,")] tblProduct tblProduct, tblChannel tblChannel)
{
tblProduct.ChannelRecord_ID = tblChannel.ChannelRecord_ID;
tblChannel.WeightUnit_ID = tblChannel.tblWeightUnit.WeightUnit_ID;
if (ModelState.IsValid)
{
db.Entry(tblProduct).State = EntityState.Modified;
db.Entry(tblChannel).State = EntityState.Modified;
db.SaveChanges();
return RedirectToAction("Index");
}
ViewBag.ChannelRecord_ID = new SelectList(db.tblChannels, "ChannelRecord_ID", "ChannelRecord_ID", tblProduct.ChannelRecord_ID);
ViewBag.DynamicLoadWeightUnit = db.tblWeightUnits.ToList();
return View(tblProduct);
}
解决方案
推荐阅读
- r - 我无法在 R 中使用“geom_sf()”绘制地图
- python - 项目在 Python / Scrapy 中屈服时失去了名字
- javascript - 从字符串变量中获取 chrome.storage 值?
- java - 保护 Eureka 客户端服务端点
- python - 检查目标时出错:预期 dense_192 有 3 个维度,但得到了形状为 (37118, 1) 的数组
- android - 如何访问自定义库的 strings.xml 资源?
- r - 如果满足条件,则添加新行 (\n)
- php - 在 Laravel 5.5 中检索强制转换数组?
- c# - C#表单类事件
- python - 使用递归找到大小为 k 的平衡代码