2012-12-19 13 views
7

यह शायद वास्तव में सरल है ... मैं SelectList बनाने की कोशिश कर रहा हूं जिसमें वर्तमान तक से 2008 तक वापस है। यह हमेशा मामला होगा। उदाहरण के लिए, वर्ष 2020 में, मेरे selectList मान 2020 से शामिल होंगे - 2008वर्षों के लिए चुनिंदा सूची

मैं इस पाश की स्थापना की है, लेकिन मुझे यकीन है कि क्या इस के साथ जाने के लिए सबसे अच्छी जगह

for (int i = currentYear; i != 2009; --i) 
{ 

} 

है नहीं कर रहा हूँ क्या प्रत्येक पुनरावृत्ति के लिए SelectListItem और SelectList पर इसे "जोड़ना" संभव है?

मुझे नहीं लगता कि ऊपर मेरा कथन संभव है, इसलिए मेरा अगला विचार साल की सूची बनाना था, फिर इसे बनाने के लिए LINQ का उपयोग करें।

var selectList = ListOfYears.Select(new SelectListItem 
{ 
    Value = 
    Text = 
}); 

लेकिन फिर मुझे पूरी तरह से यकीन नहीं है कि सूची से मूल्य कैसे प्राप्त करें। धन्यवाद

उत्तर

15
var selectList = 
    new SelectList(Enumerable.Range(2008, (DateTime.Now.Year - 2008) + 1)); 
+0

आखिरकार, जब इस सूची में नीचे एक बूंद हो जाता है, मुझे लगता है कि यह हो जाएगा कोड को बदलना पड़ा ऑर्डर 2008 में सूचीबद्ध ... 2012. क्या इसके विपरीत करने का कोई तरीका है? 'रेंज' नकारात्मक मूल्यों की तरह प्रतीत नहीं होता था। इसके अतिरिक्त, डीबगर के माध्यम से एक त्वरित रन से पता चलता है कि आपका कोड केवल 2008-2011 से चला जाता है। आसान फिक्स – Jeff

+1

बस एक बार टॉस करें।) Enumerable.Range के बाद। –

+1

धन्यवाद। यह 'var selectList = new selectList (Enumerable.Range (2008, DateTime.Now.Year - 2007) काम करता है। Reverse());' – Jeff

0

के बजाय एक एक SelectList को SelectListItem जोड़ने के लिए, बस यह एक List<SelectListItem> में जोड़ें। रेजर एक स्रोत के रूप में List<SelectListItem> का उपयोग कर सकते हैं।

1

मुझे पुराने ब्राउज़र में काम करने के लिए स्वीकार किए गए उत्तर को थोड़ा बदलना पड़ा। मैं इस

<option value="">1996</option><option value="">1997</option> 

की तरह मान अनुपलब्ध एक का चयन सूची के साथ समाप्त हो गया मैं ऊपर इस

var yr = Enumerable.Range(1996, (DateTime.Now.Year - 1995)).Reverse().Select(x => new SelectListItem { Value = x.ToString(), Text = x.ToString() }); 
     return new SelectList(yr.ToList(), "Value", "Text"); 
संबंधित मुद्दे