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