我使用其他字段搜索了数据库。数据库中只有1个项目。在编辑过程中,数据库中的实体ID映射不正确
var product= db.products.FirstOrDefault(x => x.nonID == id);
return product;
例如项目的实际ID是:112 的nonID是888
当它返回到查看与查询字符串ID = 888
@Html.HiddenFor(model => model.ID)
隐藏字段是地图到nonID而不是映射到已回顾的数据库中的实际ID。
当ID未找到时,这导致我保存问题。有人知道这是为什么发生? 产品类
public class product
{
[Display(Name = "ID")]
[Required(ErrorMessage = "Required.")]
public long ID { get; set; }
[Display(Name = "Search No")]
[Required(ErrorMessage = "Required.")]
public string nonID { get; set; }
详细信息页面编辑页面事件
<input type="button" class="btn btn-info" value="Edit" onclick="location.href='@Url.Action("Edit","Product",new { id = Model.nonID})'" />
public Product GetProductDetails(string id)
{
Product product = db.Products.FirstOrDefault(x => x.nonID == id);
return product;
}
编辑页面隐藏字段
@Html.HiddenFor(model => model.ID)
编辑页面查询字符串
Product/Edit/888
编辑页面获取产品信息
public ActionResult Edit(string id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var product = service.GetProductDetails(id);
ViewBag.type = new SelectList(service.GetAllProductLibrary(), "ProductTypeID", "ProductTypeName", product.type);
if (product == null)
{
return HttpNotFound();
}
return View(product);
}
保存编辑项目时。假设使用的112的ID保存。但ID没有被映射填充
您需要在您的控制器方法中显示代码,并且型号 –
添加了代码 –
您仍然没有显示编辑GET方法的代码(这是最重要的位) –