2016-09-12 120 views
0

我正在構建一個視圖,用戶可以選擇一些公司,選擇一些公司後,我可以點擊一個按鈕並執行一些操作。 問題是我無法在ViewModel中綁定選定的公司。獲取ASP.Net中選定的項目MVC

下面是我有:

視圖模型:

public class ParametrosPesquisaViewModel 
{ 
    public ParametrosPesquisaViewModel() 
    {    
     Empresas = new List<EmpresaViewModel>();   
    } 

    public IList<EmpresaViewModel> Empresas { get; set; }  
} 

控制器:

獲取

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 
} 

HTML:

@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> 


     } 

在後的ActionResult,該parametros.Empresas沒有得到綁定。 這種情況的最佳方法是什麼?

+0

您可以使用編輯器模板來處理此問題。看看[如何知道從HttpPost創建操作方法中選擇的複選框?](http://stackoverflow.com/questions/38961222/how-to-know-the-selected-checkboxes-from-within-the -httppost-create-action-metho) – Shyju

回答

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> 
} 
+0

這是關於時間微軟「固定」這個。每個人都會在某個時刻犯下這個錯誤,這會讓你認爲實現必須是錯誤的。 – Liam

+0

@sachin,你明白了。謝謝 – Maturano