由于不包含自动增量字段,ModelState.IsValid返回FALSE

时间:2011-01-18 18:06:00

标签: asp.net-mvc-2 linq-to-entities

我有两个结构相同的表,每个表都有简单的Create New和Update表单。当更新和添加新行时,其中一个表工作正常...另一个表适用于更新,但在创建新行时无法使其超过ModelState.IsValid。

我收到一条错误消息,指出必须包含“ID”字段,即使这是一个自动递增的主键。我也试过提交一个空值,但这也不起作用。

据我所知,我的两个主键都以相同的方式设置,并且它们都使用LINQ to Entities模型。

 [HttpPost]
    public ActionResult CreateProduct(Product product)
    {
        if (ModelState.IsValid)
        {
            productrepository.Add(product);
            productrepository.Save();

            return RedirectToAction("ProductList");
        }
        return View();
    }

有什么建议吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

使用绑定属性排除ID:

[HttpPost]
public ActionResult Create([Bind(Exclude="ID")]CompanyAddress companyAddress)
{
    if (ModelState.IsValid)

答案 1 :(得分:0)

我将自动递增列名称从“ID”更改为“AutoID”,现在它似乎可以正常工作。

这是我在两张桌子之间找到的唯一区别,所以我猜测我的模型需要更新,或者使用“ID”暗示了一些无意的事情。

我仍然不确定为什么它不起作用,我很高兴我得到它的工作!