我正在建立一个用户可以选择一些公司的视图,在选择了一些公司后,我可以点击一个按钮并做一些事情。 问题是我无法绑定ViewModel中的选定公司。
以下是我所拥有的:
ViewModel:
public ActionResult Pesquisa()
{
ParametrosPesquisaViewModel parametros = new ParametrosPesquisaViewModel();
var empresas = _empresaAppService.BuscarEmpresasValidas();
foreach (EmpresaViewModel empresa in empresas)
{
//Simulando a empresa logada
empresa.Selecionada = empresa.empresa == 1;
parametros.Empresas.Add(empresa);
}
return View(parametros);
}
控制器:
获取
public ActionResult Pesquisa(ParametrosPesquisaViewModel parametros)
{
//Do something
}
发表
@model LMX.RecuperadorCupomFiscal.Application.ViewModels.ParametrosPesquisaViewModel
@using (Html.BeginForm("Pesquisa", "RecuperadorCupomFiscal", FormMethod.Post))
{
... skipping some html code
<table class="table table-striped table-hover">
<thead>
<tr>
<th>
<label for="Empresa">Empresa(s):</label>
</th>
<th>
<label for="cidade_emp">Cidade</label>
</th>
<th>
<label for="estado_emp">Estado</label>
</th>
</tr>
</thead>
<tbody>
@foreach (var empresa in Model.Empresas)
{
<tr>
<td>
@Html.CheckBoxFor(model => empresa.Selecionada)
@Html.DisplayFor(model => empresa.NomeEmpresaCodigo)
</td>
<td>
@Html.DisplayFor(model => empresa.cidade_emp)
</td>
<td>
@Html.DisplayFor(model => empresa.estado_emp)
</td>
</tr>
}
</tbody>
</table>
}
HTML
{{1}}
在Post ActionResult中,parametros.Empresas没有得到绑定。 这种情况的最佳方法是什么?
答案 0 :(得分:2)
生成复选框的方式,模型绑定器将无法绑定提交的数据。相反,尝试以这种方式重写你的循环:
@for (var i = 0; i < Model.Empresas.Count; i++)
{
<tr>
<td>
@Html.CheckBoxFor(model => Model.Empresas[i].Selecionada)
@Html.DisplayFor(model => Model.Empresas[i].NomeEmpresaCodigo)
</td>
<td>
@Html.DisplayFor(model => Model.Empresas[i].cidade_emp)
</td>
<td>
@Html.DisplayFor(model => Model.Empresas[i].estado_emp)
</td>
</tr>
}