0

リストにサーバルチェックボックス項目を含むフォームがあります。このリストの編集者がいます。それらは画面に正常に表示されます。しかし、提出時にチェックされた項目はモデルに提出されません...

モデル:

public class ContactUsersModel : BaseModel
{
     public IList<FilterCheckModel> PreviousVisitors { get; set; }
}

public class FilterCheckModel : BaseModel
{
    public string Name { get; set; }
    public string Value { get; set; }
    public bool IsChecked { get; set; }        
}

コントローラ:

IList<FilterCheckModel> prevVisitList = new List<FilterCheckModel>();
prevVisitList.Insert(0, new FilterCheckModel() { Name = "All previous visitors", Value = "0" });
prevVisitList.Insert(1, new FilterCheckModel() { Name = "Not visited in last month", Value = "1" });
prevVisitList.Insert(2, new FilterCheckModel() { Name = "Not visited for 1-3 months", Value = "2" });
prevVisitList.Insert(3, new FilterCheckModel() { Name = "Not visited for 3-6 months", Value = "3" });
prevVisitList.Insert(4, new FilterCheckModel() { Name = "Not visited for over 6 months", Value = "4" });
model.PreviousVisitors = prevVisitList;

html:

 <table>
       <tr>
         <th>
             Previous visitors:
         </th>
       </tr>
       @for (int i = 1; i < Model.PreviousVisitors.Count; i++)
       {
           @Html.EditorFor(model => model.PreviousVisitors[i], "FilterCheck", new { Index = i + 1})
       }
  </table>

編集者:

<tr>
    <td>
        @Model.Name
    </td>
    <td>
        @Html.CheckBoxFor(x => x.IsChecked)
        @Html.HiddenFor(x => x.Value)
    </td>
</tr>
4

1 に答える 1

0

それを見つけた!

その理由は、私のループでi = 1で開始されたためです。これにより、何らかの理由で問題が発生します。インデックスはフォーム0から開始する必要があります。

  @for (int i = 1; i < Model.PreviousVisitors.Count; i++)

だから私はこれをに変更しました

  @for (int i = 0; i < Model.PreviousVisitors.Count; i++)

そしてそれはうまくいきました!

于 2013-01-15T11:35:54.753 に答える