を使用して一つに作成と編集ActionResultsマージ私は現在、4つのアクションメソッドがあります:ASP.NET MVC
UserCreateを -
UserCreateを取得 - 投稿
UserEdit -
UserEditを取得 - 投稿
私の目標は、どういうわけかそれらを結合することだけですUserEdit。この2つの唯一の違いは、UserCreateがパスワードとConfirmPasswordをフォームに要求することです。 UserEditはありません。私はこのために2つの別々のViewModelを作成する必要がありました:UserCreateViewModel、UserEditViewModel。
// GET: Users/Create
[Route("users/create")]
public IActionResult UserCreate()
{
return View();
}
// POST: Users/Create
[Route("users/create")]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> UserCreate(UserCreateViewModel vm)
{
}
// GET: Users/Edit/5
[Route("users/edit/{id}")]
public async Task<IActionResult> UserEdit(string id)
{
return View(vm);
}
// POST: Users/Edit/5
[Route("users/edit/{id}")]
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> UserEdit(UserEditViewModel vm)
{
return View(vm);
}
分離それらを保つことは結構です、より良い、よりMVC大会ですが、私はちょうどMVCのいくつかの機能は、私はそれを利用しておりませんということがないことを確認したい、私は唯一の2アクションメソッドを持って助けることができる場合、これに対する1つのビューモデル。
これが完成しました!今はすべて私にとって意味があります。私はUserEditと呼ばれる1つのGET関数を作成し、IDを作ったと言うことができますか?オプション。 VMにIsNewという名前のプロパティを追加して、単にパスワードとパスワードの確認フィールドを表示するかどうかをチェックすることができます。ここで問題となっているのは、自分のVMで[必須]注釈がPasswordとConfirmPasswordの上にあるため、ユーザーがModelState.IsValidを編集している状況でPOSTで失敗するということです。理にかなっている?ちょうど私が2つの別々のVMで分かれている可能性が高いにもかかわらず、私がこれをよく理解していることを確認したいのです。 –
最後のアプローチは、2つの別々のViewModelと2つの別々の関数です。私は実際にフォームが似ているので、単一のViewModelしか持たない方法を見つけようとしていましたが、あなたが言っていたように検証は私を駄目にしています。 –
yes.asはそれを別のものにしておくと言っています。それはちょうどうんざりしています。チェックのための余分なロジックを書く必要があります。常に固体の原則に従います。 –