送信から戻った後、ドロップダウンリストの値を保持するにはどうすればよいですか?
私は次の構造を持っています。
コントローラー上:
[HttpPost]
public ActionResult Cadastro(CadastroViewModel viewModel)
{
try
{
var usuario = Mapper.Map<CadastroViewModel, Usuario>(viewModel);
servicoDeAplicacaoDeUsuario.Inserir(usuario);
}
catch (ValidationException validationException)
{
this.ModelState.Clear();
foreach (var error in validationException.Errors)
this.ModelState.AddModelError(error.PropertyName, error.ErrorMessage);
return View("Cadastro", viewModel);
}
return RedirectToAction("Index", "Home");
}
したがって、上記ではいくつかの検証エラーが返されますが、viewModel には返すリスト (ドロップダウン) がありません。
@using (Html.BeginForm("Cadastro", "Cadastro", FormMethod.Post))
{
<ul class="login-signup-list">
<li>
@Html.TextBoxFor(f => f.NomeCompleto, new { @class = "span10", autofocus = "autofocus", placeholder = RecursoDeCadastro.NomeCompleto, maxlength = 100 })
</li>
<li>
@Html.TextBoxFor(f => f.Email, new { @class = "span10", type="email", placeholder = RecursoDeCadastro.Email, maxlength = 100 })
</li>
<li>
@Html.TextBoxFor(f => f.Senha, new { @class = "span10", type="password", placeholder = RecursoDeCadastro.Senha, maxlength = 50 })
</li>
<li>
@Html.DropDownListFor(m => m.IdPais, new SelectList(Model.Paises, "Id", "Nome"), new { @class = "span10" } )
</li>
<li>
@Html.DropDownListFor(m => m.IdUF, new SelectList(Model.UFs, "Id", "Nome"), new { @class = "span10" } )
</li>
<li>
@Html.DropDownListFor(m => m.IdMunicipio, new SelectList(Model.Municipios, "Id", "Nome"), new { @class = "span10" } )
</li>
<li>
<button class="btn btn-primary">@RecursoDeCadastro.CriarConta</button>
</li>
// ... ?
}
データベースからすべてのリストを再度取得し、リストのみを失うため、投稿時にviewModelに付属するId(IdUFなど)を使用して値を設定できます。しかし、再度データベースにリクエストする必要はないと思います。
回避策はありますか?ログインしたユーザーによるセッションを使用できますか? どのように?
ありがとう。
ウィルトン・ラファト・ウォンラス