从提交返回后如何保留下拉列表的值?
我有以下结构。
在控制器上:
[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)设置它的值,因为我只丢失了列表。但我认为没有必要再次请求数据库。
有解决方法吗?我可以通过登录用户使用会话吗?如何?
谢谢。
威尔顿·鲁法托·沃拉斯