0

送信から戻った後、ドロップダウンリストの値を保持するにはどうすればよいですか?

私は次の構造を持っています。

コントローラー上:

[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など)を使用して値を設定できます。しかし、再度データベースにリクエストする必要はないと思います。

回避策はありますか?ログインしたユーザーによるセッションを使用できますか? どのように?

ありがとう。

ウィルトン・ラファト・ウォンラス

4

0 に答える 0