【发布时间】:2020-11-19 21:08:06
【问题描述】:
我的编辑表单出现了一些问题,无论我使用什么似乎都无法正常工作。
我试过了
[ReadOnly(true)] and [Editable(false)]
在模型中
@Html.EditorFor(model => model.SellingPrice, new { htmlAttributes = new { @class = "form-control", @readonly = true } })
在视图中..
我已经更改了控制器,但对字段一无所知。
我也试过把模型改成
{ get; private set; }
根据另一个站点上的另一个帖子在模型中使用[ReadOnly(true)] 并且控制器中没有任何东西指向它,它应该出现'null',但它没有。它似乎给出了 0 值或该字段中包含的值。取决于我是否在编辑视图中使用它。
表中的这个字段是SQL端的计算字段。仅用于观看。
以下是控制器 POST - 我尝试过的 2 个版本:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(ProductMaster productMaster)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
try
{
if (ModelState.IsValid)
{
ProductMaster prodFromDB = db.ProductMaster.Single(x => x.ProductMasterId == productMaster.ProductMasterId);
prodFromDB.VendorId = productMaster.VendorId;
prodFromDB.Material = productMaster.Material;
prodFromDB.VendorRef = productMaster.VendorRef;
prodFromDB.CreatedDate = productMaster.CreatedDate;
prodFromDB.CreatedBy = productMaster.CreatedBy;
prodFromDB.LastUpdated = productMaster.LastUpdated;
prodFromDB.UpdatedBy = productMaster.UpdatedBy;
prodFromDB.UnitOfMeasure = productMaster.UnitOfMeasure;
prodFromDB.StandardCost = productMaster.StandardCost;
prodFromDB.AverageCost = productMaster.AverageCost;
prodFromDB.LastCost = productMaster.LastCost;
prodFromDB.IsPrimary = productMaster.IsPrimary;
var Manager = ((IObjectContextAdapter)db).ObjectContext.ObjectStateManager;
Manager.ChangeObjectState(prodFromDB, System.Data.Entity.EntityState.Modified);
db.SaveChanges();
sb.Append("Submitted");
return Content(sb.ToString());
}
else
{
foreach (var key in this.ViewData.ModelState.Keys)
{
foreach (var err in this.ViewData.ModelState[key].Errors)
{
sb.Append(err.ErrorMessage + "<br/>");
}
}
}
}
catch (Exception ex)
{
sb.Append("Error :" + ex.Message);
}
return Content(sb.ToString());
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit([Bind(Include = "ProductMasterId,VendorId,Material,VendorRef,CreatedDate,CreatedBy,LastUpdated,UpdatedBy,UnitOfMeasure,StandardCost,AverageCost,LastCost,IsPrimary")] ProductMaster productMaster)
{
System.Text.StringBuilder sb = new System.Text.StringBuilder();
try
{
if (ModelState.IsValid)
{
db.Entry(productMaster).State = EntityState.Modified;
db.SaveChanges();
sb.Append("Submitted");
return Content(sb.ToString());
}
else
{
foreach (var key in this.ViewData.ModelState.Keys)
{
foreach (var err in this.ViewData.ModelState[key].Errors)
{
sb.Append(err.ErrorMessage + "<br/>");
}
}
}
}
catch (Exception ex)
{
sb.Append("Error :" + ex.Message);
}
return Content(sb.ToString());
}
我得到的错误是:
无法修改“SellingPrice”列,因为它是计算列或者是 UNION 运算符的结果
【问题讨论】:
标签: c# asp.net-mvc entity-framework