2016-11-11 17 views
7

में चेकबॉक्स सूची कार्यान्वित करें। मैं नेट कोर में एक चेकबॉक्स सूची को लागू करने के लिए देख रहा हूं, लेकिन कुछ कठिनाइयों का सामना कर रहा हूं।.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 में फ़िल्टर संपत्ति झूठी भले ही यह व्यू में चयनित चयनित पता चलता है।

+0

क्या आपने 'Html.CheckboxFor (m => m.Filters [i] .Name) 'का उपयोग करने का प्रयास किया है? – Dai

+0

इसके अलावा, प्रस्तुत एचटीएमएल आपके मौजूदा रेजर कोड के साथ कैसा दिखता है? – Dai

+0

यदि एएसपी-संपत्ति के अतिरिक्त चेकबॉक्स इनपुट फ़ील्ड के लिए आप चेक और/या वैल्यू प्रॉपर्टी निर्दिष्ट करते हैं, तो वास्तविक चेकबॉक्स स्थिति POST कार्रवाई में सही ढंग से पारित नहीं की जाएगी। यदि आप इसे केवल एएसपी के साथ छोड़ देते हैं तो यह काम करेगा। –

उत्तर

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

यदि आप फ़िल्टर क्लास देखते हैं तो इसमें तीन संपत्ति आईडी, नाम और चयनित हैं। चेकबॉक्स के खिलाफ प्रदर्शन के लिए नाम का उपयोग किया जाता है। अन्यथा चेकबॉक्स के लिए कुछ भी प्रदर्शित नहीं होगा। हम लेबल के बिना भी सीधे प्रिंट कर सकते हैं @ मॉडल। फ़िल्टर [i]। लेकिन जैसा सवाल है कि मैंने उस लेबल का उपयोग किया है क्योंकि मुझे इसमें कोई समस्या नहीं दिख रही है। – dotnetstep