我正在尝试编辑记录。我有默认路线
当我单击提交按钮时,我在UpdateModel行上得到一个例外:
无法更新“MyProject.Mvc.Models.Product”类型的模型。
在页面上,ProductId字段的验证提示值无效:
值“9”无效。 9是我要编辑的记录的ID。 可能出现什么问题?
public ActionResult Edit(int id)
{
Product product = productRepository.GetProduct(id);
return View(new ProductFormViewModel(product));
}
[HttpPost]
public ActionResult Edit(int id, FormCollection productFormViewModel)
{
Product product = productRepository.GetProduct(id);
try
{
// TODO: Add update logic here
UpdateModel(product, "Product");
productRepository.Save();
return RedirectToAction("Index");
}
catch (Exception ex)
{
return View(new ProductFormViewModel(product));
}
}
如果我将更新模型行更改为:
UpdateModel(product);
然后不会抛出异常,数据也不会在数据库中更新。
[编辑]
我正在使用实体框架
namespace MyProject.Mvc.Models
{
[MetadataType(typeof(ProductMetaData))]
public partial class Product
{
public Product()
{
// Initialize Product
this.CreateDate = System.DateTime.Now;
}
}
public class ProductMetaData
{
[Required(ErrorMessage = "Product name is required")]
[StringLength(50, ErrorMessage = "Product name must be under 50 characters")]
public object ProductName { get; set; }
[Required(ErrorMessage = "Description is required")]
public object Description { get; set; }
}
public class ProductFormViewModel
{
public Product Product { get; private set; }
public ProductFormViewModel()
{
Product = new Product();
}
public ProductFormViewModel(Product product)
{
Product = product;
}
}
}
答案 0 :(得分:0)
答案 1 :(得分:0)
UpdateModel(product, "Product");
的问题在于您使用与Product
类名称相同的前缀(Product
)。尝试使用不同的前缀。为此,您可能需要重命名Product
类的ProductFormViewModel
属性。
答案 2 :(得分:0)
您需要编辑ID吗?如果ID是表中产品的PK,则可能是绑定问题。 尝试
[MetadataType(typeof(ProductMetaData))]
[Bind(Exclude="ID")]
public partial class Product
{
public Product()
{
// Initialize Product
this.CreateDate = System.DateTime.Now;
}
}