0

「Store」テーブルを編集するビューがあります。これはすべて問題ありませんが、ビューにはすべてのフィールドが表示されず、保存しようとすると、ビュー投稿にないフィールドを空白にすることはできないというエラーがスローされます。もちろん、これらのフィールドは上書きされるとは想定されていません。ビューはそれらを編集していません。

ここに私の投稿機能があります

[HttpPost]
    public ActionResult Edit(Store storeModel) {
        if (ModelState.IsValid) {
            Store storeContext = database.Stores.Find(storeModel.ID);
            database.Entry(storeContext).CurrentValues.SetValues(storeModel);
            database.SaveChanges();
        }
    }

オンラインで検索すると、明らかに問題は、フィールドがポストバックに存在しない場合でも、MVC が編集中のフィールドを認識せず、すべてのフィールドを編集済みとして扱うことです。ビューで編集しているフィールドを「伝える」には、次のようにする必要があります。

            //Store contextStore = new Store { ID = postBackStore.ID };
            //database.Stores.Attach(contextStore );
            //contextStore .Name = postBackStore.Name;
            //contextStore .Address = postBackStore.Address;
            //contextStore .City = postBackStore.City;
            //contextStore .Postal = postBackStore.Postal;
            //contextStore .Phone = postBackStore.Phone;
            //contextStore .StoreNumber = postBackStore.StoreNumber;
            //contextStore .IsActive = postBackStore.IsActive;
            //database.Entry(contextStore).State = EntityState.Modified;

ただし、MVC は既に Store オブジェクトを追跡しており、同じ ID で新しいオブジェクトを作成できないと不平を言うため、これはうまくいきませんでした。また、ビューで既にフィールドを定義しているときに、すべてのフィールドを再度定義する必要があるのも好きではありません。

ビューにあるフィールドを明示的に定義しなくても、(モデル内のすべてのフィールドとは対照的に) ビュー内のフィールドのみに変更を保存する MVC を持つことができる方法はありますか?

4

1 に答える 1

0

参加フィールドだけでビューモデルを使用しないのはなぜですか?

于 2013-03-26T17:11:08.147 に答える