首页 > 解决方案 > 如何从 CREATE 记录的下拉列表中将当前选择的值保存到数据库

问题描述

在我的应用程序中使用 C#、ASP.NET MVC 和实体框架,我有一个下拉字段,其中包含值:lb、oz、g、kg。这些值来自我的 SQL 数据库中名为tblWeighUnits. 这些单位将用于在创建产品时分配给产品。

当我创建一个新产品时,我WeightUnit从填充的下拉列表中选择,tblWeightUnits这样产品就可以有一个重量和正确的单位分配。

目前在我的产品控制器中,当我创建新产品记录时,无论我从下拉列表中选择了什么,数据库都会在tblWeightUnit. 我不想为要创建的单位创建新记录,我只需要创建的产品具有我选择的单位。

目前,如果我尝试编辑WeightUnit保存到产品中的内容,它可以正常工作。所以从技术上讲,我可以回去编辑以将其更改为 4 个单位之一。但是当我创建一个新产品时,它并没有考虑到我已经在下拉列表中所做的选择,它只是在tlbWeightUnit表中创建了一个全新的空记录。

当前数据库关系设置如下:

所以基本上在我的产品控制器中,当创建一个产品时,我希望能够说我正在创建的这个产品需要有WeightUnit我从下拉列表中选择的那个。

我被卡住了,因为我不知道如何分配 from tblProducttotblWeightUnit因为那是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);
 }

标签: asp.net-mvcentity-frameworkdrop-down-menuforeign-keys

解决方案


推荐阅读