获取ASP.Net MVC中的选定项目

时间:2016-09-12 15:21:55

标签: c# asp.net asp.net-mvc razor

我正在建立一个用户可以选择一些公司的视图,在选择了一些公司后,我可以点击一个按钮并做一些事情。 问题是我无法绑定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没有得到绑定。 这种情况的最佳方法是什么?

1 个答案:

答案 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>
}