0

全て。多かれ少なかれMVCに慣れていないため、問題の処理方法がわかりません。

データベース テーブル (約 100 列) から生成されたデータ モデルがあります。申請フォームは 6 ~ 7 個のビューに分かれています。最初のビューは、新しいレコードを作成し、データベースに挿入します。残りのビューは、フォームから情報を収集し、作成されたレコードを更新することを想定しています。

    [HttpPost]
    public ActionResult GeneralInfo(ADP.Models.ADPRegistration _registration)
    {
        try
        {

            ADP.Models.IS_WEBEntities _test = new IS_WEBEntities();
            _test.ADPRegistrations.Attach(_registration);
            _test.ObjectStateManager.ChangeObjectState(_registration, System.Data.EntityState.Modified);
            _test.SaveChanges();

            return View("ReferralMethod",_registration);

        }

        catch(Exception er)
        {
            return View();
        }
    }

これは、テーブルを更新する一般的なコードです。すべてのビューで同様です。モデルをビューに戻す理由は、ビュー間で ID を保持するためです。

私が抱えている問題は、エンティティ _registration にすべてのテーブル フィールドが含まれているため、ビューが投稿されたときにビュー内のフィールドのみが更新され、ビューに存在しないため、以前の列が NULL になっていることです。推測してみて。データベースの最初のモデルも列挙できないようです。

4

1 に答える 1

0

MVCがPOSTbackでモデルを再構成するとき、フォームにないフィールドはモデルでNULLになるという点で正しいです。

ビューに非表示になっているフィールドを含めることを選択します。

@Html.HiddenFor(model => model.SomeValue)

または、投稿後、検証レイヤーとリポジトリレイヤーに渡す前にモデルを更新します。

ModelState.SetModelValue("Name", new ValueProviderResult("Some string",string.Empty,new CultureInfo("en-US")));
于 2013-01-31T17:42:40.587 に答える