2011-01-18 7 views
0

それぞれに単純なCreate NewフォームとUpdateフォームを持つ2つの構造的に同一のテーブルがあります。テーブルの1つは、新しい行を更新したり追加したりするときに完璧に機能します...もう一方のテーブルは正常に動作しますが、新しい行を作成するときはModelState.IsValidを超えることはできません。ModelState.IsValidは、自動インクリメントフィールドが含まれていないためにFALSEを返します。

「ID」フィールドが自動インクリメントのプライマリキーであっても含める必要があるというエラーメッセージが表示されます。私もnull値を提出しようとしましたが、どちらもうまくいきません。

私の主キーの両方が同じ方法で設定され、LINQ to Entities Modelを使用していることが分かります。

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

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

お勧めはありますか?

ありがとうございます!

+0

はあなたが製品にId列の上に置く属性かを示すことはできますか? –

+0

なぜビューモデルを使用していないのですか? –

答えて

0

私は自分の自動インクリメント列名を 'ID'から 'AutoID'に変更しましたが、今は動作するようです。

これは2つのテーブルの間で見つけることができる唯一の違いでしたので、私のモデルを更新する必要があるか、またはIDを使用することが意図的ではないことを暗示していました。

私はまだそれがうまくいかなかったかどうかは分かりませんが、私はうまく働いています!

0

はbind属性とIDを除外:

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