2016-11-11 21 views
7

uygulamasında denetim kutusu listesi .Net Çekirdeğinde bir onay kutusu uygulamak istiyorum ancak bazı zorluklarla karşılaşıyorum..NET çekirdeği

Benim 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; } 
} 

Benim Görünüm: o görünümünde seçili olsa bile

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

benim kontrolöre gönderme, benim ViewModel Filtre özelliği false seçilmiş gösterir.

+0

Bunun yerine Html.CheckboxFor (m => m.Filters [i] .Name) 'kullanmayı denediniz mi? – Dai

+0

Ayrıca, işlenen HTML mevcut Jilet kodunuzda neye benziyor? – Dai

+0

Eğer onay kutusu özelliğine ek olarak onay kutusu giriş alanı için işaretli ve/veya değer özelliğini belirtirseniz, gerçek onay kutusu durumu POST eylemine doğru şekilde aktarılmayacaktır. Sadece asp-for ile dışarı bırakırsanız o zaman işe yarayacaktır. –

cevap

11

Aşağıdaki yoldan giderim.

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

Burada denetleyicinin ve eylemin düzgün bir şekilde uyguladığına inanıyorum.

+0

Hayır. Tam olarak modelimin tamamını onay kutusundaki değer değişikliği ile devam ettirdim. – dotnetstep

+0

Filtre sınıfına bakarsanız, üç Özelliğin Adı, Adı ve Seçimi vardır. Ad, Karşılığa karşı onay kutusu için kullanılır. Aksi halde, onay kutusu için hiçbir şey gösterilmez. Etiketsiz olarak da yapabiliriz. @ Model.Filters [i] .Name yazdı, ancak soruda bu etiketi kullandım. – dotnetstep