Asp.net mvc Mvc元组发布操作未检索选定的dropdownlist id

Asp.net mvc Mvc元组发布操作未检索选定的dropdownlist id,asp.net-mvc,tuples,Asp.net Mvc,Tuples,在编辑产品详细信息时,我在mvc项目中使用tuple来显示与特定产品相关的产品、条形码和库存信息。我使用数据库优先的方法,对于tuple,我注册了tuple对象的自定义模型绑定器 这是我的看法 @model Tuple<I3SystemEntityModel.tblProduct, I3SystemEntityModel.tblBarcode, I3SystemEntityModel.tblStock> @{ ViewBag.Title = "Ed

在编辑产品详细信息时,我在mvc项目中使用tuple来显示与特定产品相关的产品、条形码和库存信息。我使用数据库优先的方法,对于tuple,我注册了tuple对象的自定义模型绑定器 这是我的看法

    @model Tuple<I3SystemEntityModel.tblProduct, I3SystemEntityModel.tblBarcode,    I3SystemEntityModel.tblStock>

    @{
      ViewBag.Title = "Edit";
     }

   <h2>Edit</h2>


   @using (Html.BeginForm())
  {
    @Html.AntiForgeryToken()

     <div class="form-horizontal">
    <h4>tblProduct</h4>
    <hr />
    @Html.ValidationSummary(true)
    @Html.HiddenFor(model => model.Item1.ProductRNo)
    @Html.HiddenFor(model => model.Item2.BarcodeRno)
    @Html.HiddenFor(model => model.Item3.StockRNo)

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.TillDescription, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Item1.TillDescription)
            @Html.ValidationMessageFor(model => model.Item1.TillDescription)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.ProductQty, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Item1.ProductQty)
            @Html.ValidationMessageFor(model => model.Item1.ProductQty)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.ProductFullDescription, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Item1.ProductFullDescription)
            @Html.ValidationMessageFor(model => model.Item1.ProductFullDescription)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.AgeLimit, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Item1.AgeLimit)
            @Html.ValidationMessageFor(model => model.Item1.AgeLimit)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.CostPrice, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Item1.CostPrice)
            @Html.ValidationMessageFor(model => model.Item1.CostPrice)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.NewSalesPrice, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Item1.NewSalesPrice)
            @Html.ValidationMessageFor(model => model.Item1.NewSalesPrice)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.EffectiveDate, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Item1.EffectiveDate)
            @Html.ValidationMessageFor(model => model.Item1.EffectiveDate)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.EndDate, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Item1.EndDate)
            @Html.ValidationMessageFor(model => model.Item1.EndDate)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.ProductComment, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Item1.ProductComment)
            @Html.ValidationMessageFor(model => model.Item1.ProductComment)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.ProductAtribute, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Item1.ProductAtribute)
            @Html.ValidationMessageFor(model => model.Item1.ProductAtribute)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.ProductOrder, new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.EditorFor(model => model.Item1.ProductOrder)
            @Html.ValidationMessageFor(model => model.Item1.ProductOrder)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.VatRNo, "VatRNo", new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownList("VatRNo", String.Empty)
            @Html.ValidationMessageFor(model => model.Item1.VatRNo)
        </div>
    </div>

    <div class="form-group">
        @Html.LabelFor(model => model.Item1.DepartmentRNo, "DepartmentRNo", new { @class = "control-label col-md-2" })
        <div class="col-md-10">
            @Html.DropDownList("DepartmentRNo", String.Empty)
            @Html.ValidationMessageFor(model => model.Item1.DepartmentRNo)
        </div>
    </div>
@模型元组
@{
ViewBag.Title=“编辑”;
}
编辑
@使用(Html.BeginForm())
{
@Html.AntiForgeryToken()
TBL产品

@Html.ValidationSummary(true) @Html.HiddenFor(model=>model.Item1.ProductRNo) @Html.HiddenFor(model=>model.Item2.BarcodeRno) @Html.HiddenFor(model=>model.Item3.StockRNo) @LabelFor(model=>model.Item1.TillDescription,新的{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Item1.TillDescription) @Html.ValidationMessageFor(model=>model.Item1.TillDescription) @LabelFor(model=>model.Item1.ProductQty,新的{@class=“controllabel col-md-2”}) @Html.EditorFor(model=>model.Item1.ProductQty) @Html.ValidationMessageFor(model=>model.Item1.ProductQty) @LabelFor(model=>model.Item1.ProductFullDescription,新的{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Item1.ProductFullDescription) @Html.ValidationMessageFor(model=>model.Item1.ProductFullDescription) @LabelFor(model=>model.Item1.AgeLimit,新的{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Item1.AgeLimit) @Html.ValidationMessageFor(model=>model.Item1.AgeLimit) @LabelFor(model=>model.Item1.CostPrice,新的{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Item1.CostPrice) @Html.ValidationMessageFor(model=>model.Item1.CostPrice) @LabelFor(model=>model.Item1.newsaleprice,新的{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Item1.NewSalesPrice) @Html.ValidationMessageFor(model=>model.Item1.NewSalesPrice) @LabelFor(model=>model.Item1.EffectiveDate,新的{@class=“controllabel col-md-2”}) @Html.EditorFor(model=>model.Item1.EffectiveDate) @Html.ValidationMessageFor(model=>model.Item1.EffectiveDate) @LabelFor(model=>model.Item1.EndDate,新的{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Item1.EndDate) @Html.ValidationMessageFor(model=>model.Item1.EndDate) @LabelFor(model=>model.Item1.ProductComment,新的{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Item1.ProductComment) @Html.ValidationMessageFor(model=>model.Item1.ProductComment) @LabelFor(model=>model.Item1.ProductAtribute,新的{@class=“control label col-md-2”}) @Html.EditorFor(model=>model.Item1.productAttribute) @Html.ValidationMessageFor(model=>model.Item1.productAttribute) @LabelFor(model=>model.Item1.ProductOrder,新的{@class=“controllabel col-md-2”}) @EditorFor(model=>model.Item1.ProductOrder) @Html.ValidationMessageFor(model=>model.Item1.ProductOrder) @LabelFor(model=>model.Item1.VatRNo,“VatRNo”,新的{@class=“controllabel col-md-2”}) @DropDownList(“VatRNo”,String.Empty) @Html.ValidationMessageFor(model=>model.Item1.VatRNo) @LabelFor(model=>model.Item1.DepartmentRNo,“DepartmentRNo”,新的{@class=“controllabel col-md-2”}) @DropDownList(“DepartmentRNo”,String.Empty) @Html.ValidationMessageFor(model=>model.Item1.DepartmentRNo)
以下是与编辑相关的控制器操作

       public  ActionResult Edit(int? id)
       {
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }

        tblProduct tblproduct = db.tblProducts.Find(id);
        tblBarcode tblBarcode = db.tblBarcodes.Where(d => d.ProductRNo == id).FirstOrDefault();
        tblStock tblStock = db.tblStocks.Where(d => d.ProductRNo == id).FirstOrDefault();                  
        Tuple<tblProduct, tblBarcode, tblStock> tupleProduct = 
            new Tuple<tblProduct, tblBarcode, tblStock>(tblproduct, tblBarcode,tblStock);

        if (tblproduct == null)
        {
            return HttpNotFound();
        }
        ViewBag.DepartmentRNo = new SelectList(db.tblDepartments, "DepartmentRNo", "DepartmentDiscription", tblproduct.DepartmentRNo);
        ViewBag.SubDepatmenRNo = new SelectList(db.tblSubDepartments, "SubDepatmenRNo", "SubDeparmentDiscription", tblproduct.SubDepatmenRNo);
        ViewBag.VatRNo = new SelectList(db.tblVats, "VatRNo", "VatCode", tblproduct.VatRNo);
        ViewBag.BarcodeTypeRNo = new SelectList(db.tblBarcodeTypes, "BarcodeTypeRNo", "BarcodeType", tblBarcode.BarcodeTypeRNo);
                    return View(model:tupleProduct);
    }


    // POST: /Product/Edit/5
    // To protect from overposting attacks, please enable the specific properties you want to bind to, for 
    // more details see http://go.microsoft.com/fwlink/?LinkId=317598.
    [HttpPost]
    [ValidateAntiForgeryToken]
    public async Task<ActionResult> Edit(Tuple<tblProduct, tblBarcode, tblStock> tupleProduct)
    {
        try
        {
            if (ModelState.IsValid)
            {
                db.Entry(tupleProduct.Item1).State = System.Data.Entity.EntityState.Modified;
                tupleProduct.Item2.ProductRNo = tupleProduct.Item1.ProductRNo;
                db.Entry(tupleProduct.Item2).State = System.Data.Entity.EntityState.Modified;
                tupleProduct.Item3.ProductRNo = tupleProduct.Item1.ProductRNo;
                db.Entry(tupleProduct.Item3).State = System.Data.Entity.EntityState.Modified;
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            ViewBag.DepartmentRNo = new SelectList(db.tblDepartments, "DepartmentRNo", "DepartmentDiscription", tupleProduct.Item1.DepartmentRNo);
            ViewBag.SubDepatmenRNo = new SelectList(db.tblSubDepartments, "SubDepatmenRNo", "SubDeparmentDiscription", tupleProduct.Item1.SubDepatmenRNo);
            ViewBag.VatRNo = new SelectList(db.tblVats, "VatRNo", "VatCode", tupleProduct.Item1.VatRNo);
            ViewBag.BarcodeTypeRNo = new SelectList(db.tblBarcodeTypes, "BarcodeTypeRNo", "BarcodeType", tupleProduct.Item2.BarcodeTypeRNo);


            return View(tupleProduct);
        }
        catch (DbEntityValidationException dbEx)
        {

        return View();
    }
public ActionResult编辑(int?id)
{
if(id==null)
{
返回新的HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
tblProduct tblProduct=db.tblProducts.Find(id);
tblBarcode tblBarcode=db.tblBarcodes.Where(d=>d.ProductRNo==id).FirstOrDefault();
tblStock tblStock=db.tblStock.Where(d=>d.ProductRNo==id).FirstOrDefault();
元组tupleProduct=
新元组(tblproduct、tblBarcode、tblStock);
if(tblproduct==null)
{
返回HttpNotFound();
}
ViewBag.DepartmentRNo=新选择列表(db.tbldpartments,“DepartmentRNo”,“departmentdescription”,tblproduct.DepartmentRNo);
ViewBag.SubDepatmenRNo=新建选择列表(db.tblSubDepartments,“SubDepatmenRNo”,“subdepartmentdescription”,tblproduct.SubDepatmenRNo);
ViewBag.VatRNo=新的选择列表(db.tblVats,“VatRNo”,“VatCode”,tblproduct.VatRNo);
ViewBag.BarcodeTypeRNo=新选择列表(db.tblBarcodeTypes,“BarcodeTypeRNo”,“BarcodeType”,tblBarcode.BarcodeTypeRNo);
返回视图(模型:tupleProduct);
}
//POST:/Product/Edit/5
//若要防止套印攻击,请启用要绑定到的特定属性,例如
//更多详细信息请参见http://go.microsoft.com/fwlink/?LinkId=317598.
[HttpPost]
[ValidateAntiForgeryToken]
公共异步任务编辑(Tuple tupleProduct)
{
尝试
{
if(ModelState.IsValid)
{
db.Entry(tupleProduct.Item1).State=System.Data.Entity.EntityState.Modified;
tupleProduct.Item2.ProductRNo=tupleProduct.Item1.ProductRNo;
db.Entry(tupleProduct.Item2).State=