2016-12-14 25 views
-1

Ich möchte eine Tabelle mit Elementen und Kontrollkästchen erstellen, um diese Elemente auszuwählen. Ich füge diese Kontrollkästchen in eine Liste ein, aber diese Liste gibt immer null zurück. Vielen Dank für Ihre Hilfe.ASP.NET MVC CheckBox Liste senden immer null

Controller:

public ActionResult Index() 
{ 
    var expenseTypesView = new ViewExpenseTypesAndSelection 
    { 
     ExpensesTypes = _context.ExpenseType.ToList(), 
    };  
    return View(expenseTypesView); 
} 

[HttpPost] 
public ActionResult SelectExpensesTypes(ViewExpenseTypesAndSelection SelectedExpenses) 
{ 
    var entry = new userSpecificExpenses(); 
    var i = 0; 
    foreach (var item in SelectedExpenses.SelectedExpenses) 
    { 
     if(item) 
     { 
      entry.expenseTypeId = i; 
      entry.UtilisateurId= User.Identity.GetUserId(); 
      _context.UserspecificExpenses.Add(entry); 
      _context.SaveChanges(); 
     } 
     i++; 
    } 
    return View(); 
} 

Ausblick:

@model MBT.ViewModels.ViewExpenseTypesAndSelection 
.... 
@using (Html.BeginForm("SelectExpensesTypes", "ExpenseTypes")) 
{ 
    <table class="table table-bordered table-hover"> 
     <thead> 
      <tr> 
       <th class="text-center">Expense</th> 
       <th class="text-center">Include</th> 
      </tr> 
     </thead> 
     <tbody> 
      @{ 
       for (int i = 0; i < Model.ExpensesTypes.Count; i++) 
       { 
        <tr> 
         <td> 
          <div class="checkbox"> 
           @Model.ExpensesTypes[i].Type 
          </div> 
         </td> 
         <td> 
          <div class="checkbox"> 
           @Html.CheckBoxFor(m => m.SelectedExpenses[i]) 
          </div> 
         </td> 
        </tr> 
       } 
      } 
     </tbody> 
    </table> 
    <button type="submit" class="btn btn-primary">Submit</button> 
} 
+0

Was sind Ihre Modelle für 'ExpenseType' und' SelectedExpenses'? Die Verwendung von '@ Html.CheckBoxFor (m => m. SelectedExpenses [i])' ergibt keinen Sinn. Ihr 'ExpensesType'-Modell benötigt eine Eigenschaft (sagen wir)' bool IsSelected' und dann seine '@ Html.CheckBoxFor (m => m.ExpensesTypes [i] .IsSelected)' und dann würden Sie auch mindestens eine andere versteckte Eingabe benötigen die 'ExpensesType' ID-Eigenschaft –

Antwort

0

Sie ViewExpenseTypesAndSelection fast null nur mit ExpensesTypes Senden und es dann auf Ihre Post-Methode Post zurück. Es bedeutet, dass Sie null senden und null erhalten. Also, was ist falsch daran?