2011-01-12 15 views
33

मैं अपनी वेबसाइट के सभी पृष्ठों में वर्षों की एक ड्रॉप डाउन सूची शामिल करना चाहता हूं। मैंने यह तर्क लेआउट पेज (_layout.cshtml) में रखने के लिए एक अच्छी जगह मान ली। यदि कोई उपयोगकर्ता वर्ष बदलता है तो मैं अपना साल का सत्र (मॉडलबिन्डर) भी बदलना चाहता हूं। एएसपी.नेट वेब फॉर्मों के साथ ऐसा करना इतना आसान था, लेकिन एमवीसी में करना असंभव लगता है। मैंने भाग्य के साथ आंशिक दृश्य की कोशिश की। किसी के पास कोई विचार है?एमवीसी 3 लेआउट पेज, रेजर टेम्पलेट, और ड्रॉपडाउनलिस्ट

+0

क्या विशेष समस्या आप अनुभव कर रहे हैं? – marcind

उत्तर

88

सामान्य आप एक दृश्य मॉडल को परिभाषित करते हुए शुरू कर सकता है के रूप में: फिर एक नियंत्रक

public class YearsViewModel 
{ 
    public string Year { get; set; } 
    public IEnumerable<SelectListItem> Years 
    { 
     get 
     { 
      return new SelectList(
       Enumerable.Range(1900, 112) 
       .OrderByDescending(year => year) 
       .Select(year => new SelectListItem 
       { 
        Value = year.ToString(), 
        Text = year.ToString() 
       } 
      ), "Value", "Text"); 
     } 
    } 
} 

:

public class YearsController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(new YearsViewModel()); 
    } 

    [HttpPost] 
    public ActionResult Index(int year) 
    { 
     // TODO: do something with the selected year 
     return new EmptyResult(); 
    } 
} 

और सूचकांक कार्रवाई के लिए एक इसी दृश्य:

@model SomeAppName.Models.YearsViewModel 
@{ 
    Layout = null; 
} 
@Html.DropDownListFor(x => x.Year, Model.Years) 

और अंत में आपके के अंदर आप इस नियंत्रक का उपयोग कर सकते हैं:

<div id="selectyear">@Html.Action("index", "years")</div> 

और एक इसी लिपि जो एक AJAX अनुरोध भेजना होगा जब मूल्य परिवर्तन देते हैं:

$(function() { 
    $('#selectyear select').change(function() { 
     $.post('@Url.Action("index", "years")', { year: $(this).val() }, function (result) { 

     }); 
    }); 
}); 
+1

बिल्कुल सही !!!! सहायता के लिए आपका बहुत - बहुत धन्यवाद! –

+0

@ सैम, आपका स्वागत है। –

+0

बहुत बढ़िया। बिना किसी परेशानी के देश के चयनकर्ता के लिए इसे अनुकूलित किया। धन्यवाद भार –

संबंधित मुद्दे