2016-12-14 6 views
-1

これらの項目を選択するための項目とチェックボックスを含むテーブルを作成したいとします。これらのチェックボックスをリストに含めていますが、このリストは常にnullを返します。ご助力ありがとうございます。ASP.NET MVC CheckBoxリストは常にnullを送信します

コントローラー:

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(); 
} 

ビュー:

@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

あなたのモデルは「ExpenseType」と「SelectedExpenses」とは何ですか? '@Html.CheckBoxFor(m => m.SelectedExpenses [i])'を使うことは意味をなさない。あなたの 'ExpensesType'モデルは' bool IsSelected'プロパティと '@Html.CheckBoxFor(m => m.ExpensesTypes [i] .IsSelected)'プロパティを必要とします。 'ExpensesType' IDプロパティ –

答えて

0

あなただけExpensesTypesとほぼヌルViewExpenseTypesAndSelectionを送信し、その後、戻ってあなたのポストメソッドにそれを投稿。つまり、nullを送信し、nullを受け取ることを意味します。 それで何が間違っていますか?

関連する問題