0

送信されたデータをモデルに入力することで、EditorForModel が邪魔になる状況に遭遇しました。私が困ったユースケースをお見せしましょう。

一方では、データベースに保存できるフォームがあります。

public class Person {
    [HiddenInput(...)]
    public int Id {get; set;}

    public string Name {get; set;}
}

コントローラーの反対側には、ユーザーを記録できるアクションがあります。

public class PersonsController {

     public ActionResult User(bool SaveAsNew, Person p)
     {
          if (SaveAsNew)
          {
               myRepository.Add(p);
               myRepository.SaveChange();
               // p.Id is now a new Value.
          }
          else {
               Person updateMe = myRepository.Query()
                        .Where(repoP => repoP.Id = p.Id)
                        .First();
               updateMe.UpdateWith(p)
               myRepository.SaveChange();
          }
           return PartialView(p);
     }
}

ビュー側では、@Html.EditorForModel()「保存」または「新規保存」をクリックするかどうかに応じて、非表示の入力を更新するJavascriptを呼び出しています。

しかしEditorForModel、投稿されたデータからデータを入力して、ユーザーが [新規として保存] をクリックしたときに Id が変更されないようにするため、ここで問題が発生します。

そのため、提出されたデータをクリアする方法があるかどうか疑問に思っています。何かのようなもの:

          if (SaveAsNew)
          {
               myRepository.Add(p);
               myRepository.SaveChange();
               Request.ClearPostData();
               // p.Id is now a new Value.
          }

ありがとう

4

1 に答える 1