2016-11-11 5 views
7

.Net Coreにチェックボックスリストを実装しようとしていますが、いくつかの問題があります。.NETコアのチェックボックスリストを実装する

私のViewModel:

public class GroupIndexViewModel 
{ 
    public Filter[] Filters { get; set; } 
} 

public class Filter 
{ 
    public int Id { get; set; } 
    public string Name { get; set; } 
    public bool Selected { get; set; } 
} 

マイビュー:それはビューで選択されていても

@model GroupIndexViewModel 
<form asp-action="Index" asp-controller="Group" method="get"> 
    <ul> 
    @for (var i = 0; i < Model.Filters.Length; i++) 
    { 
    <li> 
     <input type="checkbox" id="@Model.Filters[i].Name" asp-for="@Model.Filters[i].Selected" value="@Model.Filters[i].Selected" checked="@Model.Filters[i].Selected" /> 
     <label for="@Model.Filters[i].Name">@Model.Filters[i].Name</label> 
    </li> 
    } 
    </ul> 
    <button type="submit" name="action">Filtrer</button> 
</form> 

私のコントローラへの投稿、私のviewmodelのFilterプロパティがfalseの選択と表示されます。

+0

'Html.CheckboxFor(m => m.Filters [i] .Name)'を使ってみましたか? – Dai

+0

また、レンダリングされたHTMLはあなたの既存のRazorコードのように見えますか? – Dai

+0

asp-forプロパティにチェックボックス入力フィールドのほかにcheckedプロパティまたはvalueプロパティを指定すると、実際のチェックボックス状態はPOSTアクションに正しく渡されません。あなたがasp-forと一緒にそれを残しておけば、それはうまくいくでしょう。 –

答えて

11

私は次のようにします。

@model GroupIndexViewModel 
<form asp-action="Index" asp-controller="Group" method="get"> 
    <ul> 
     @for (var i = 0; i < Model.Filters.Count; i++) 
     { 
      <li>  
       <input type="checkbox" asp-for="@Model.Filters[i].Selected" /> 
       <label asp-for="@Model.Filters[i].Selected">@Model.Filters[i].Name</label> 
       <input type="hidden" asp-for="@Model.Filters[i].Id" /> 
       <input type="hidden" asp-for="@Model.Filters[i].Name" />     
      </li> 
     } 
    </ul> 
    <button type="submit" name="action">Filtrer</button> 
</form> 

ここでは、コントローラとアクションを適切に実装していることを前提としています。

+0

いいえ、ちょうど私がチェックボックスで値の変更と共にモデル全体を持続させた方法。 – dotnetstep

+0

Filterクラスを見ると、Id、Name、Selectedの3つのプロパティがあります。名前はチェックボックスに対して表示に使用されます。それ以外の場合、チェックボックスは表示されません。私たちはラベルなしでも@ Model.Filters [i] .Nameを直接印刷することができますが、質問にはそのラベルがありますので、私はそれを使用しましたが、問題はありません。 – dotnetstep

関連する問題