SORU
31 Mart 2011, PERŞEMBE


En kolay C ile MVC 3 ASP.NET içinde Çağlayan bir açılan oluşturmak için *

DropDownList iki oluşturmak istiyorumcascadeC# MVC3 (tercihen Razor) kullanarak.

Yıl ve ay seçilen yıla göre özel olarak seçebileceğiniz bir tane seçebileceğiniz bir açılır istiyorum.

Basit bir şekilde anlatayım. Açılan listeden "açılan liste" ay "kalabalık olur, geçerli ay (yani Mart) kadar aylık bedeli" yıl, geçerli yıl (yani 2011) ı seçin Diğer durumlarda (yıl) için herhangi bir kısıtlama verilir. Ayrıca "" açılan listeden "" "yıl" seçilir. açılan listedeki herhangi bir öğe önce ay engellemek için iyi olurdu

Ben zaten bazı çözümler için internette, jQuery ya da ev yapımı yaklaşımlar bile kullanarak görünüyordu, ama onlar tüm MVC son sürümleri bakınız ve bazı komutlar MVC3 kaldırılmıştır.

Çok yardımcı olduğunuz için teşekkür ederim.

CEVAP
31 Mart 2011, PERŞEMBE


Her zaman olduğu gibi bir model ile başlayın:

public class MyViewModel
{
    public int? Year { get; set; }
    public int? Month { get; set; }

    public IEnumerable<SelectListItem> Years
    {
        get
        {
            return Enumerable.Range(2000, 12).Select(x => new SelectListItem
            {
                Value = x.ToString(),
                Text = x.ToString()
            });
        }
    }
}

denetleyici:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        var model = new MyViewModel();
        return View(model);
    }

    public ActionResult Months(int year)
    {
        if (year == 2011)
        {
            return Json(
                Enumerable.Range(1, 3).Select(x => new { value = x, text = x }), 
                JsonRequestBehavior.AllowGet
            );
        }
        return Json(
            Enumerable.Range(1, 12).Select(x => new { value = x, text = x }),
            JsonRequestBehavior.AllowGet
        );
    }
}

ve son olarak bir görünüm:

@model AppName.Models.MyViewModel

@Html.DropDownListFor(
    x => x.Year, 
    new SelectList(Model.Years, "Value", "Text"),
    "-- select year --"
)

@Html.DropDownListFor(
    x => x.Month, 
    Enumerable.Empty<SelectListItem>(),
    "-- select month --"
)

<script type="text/javascript">
    $('#Year').change(function () {
        var selectedYear = $(this).val();
        if (selectedYear != null && selectedYear != '') {
            $.getJSON('@Url.Action("Months")', { year: selectedYear }, function (months) {
                var monthsSelect = $('#Month');
                monthsSelect.empty();
                $.each(months, function (index, month) {
                    monthsSelect.append($('<option/>', {
                        value: month.value,
                        text: month.text
                    }));
                });
            });
        }
    });
</script>

Açıkçası benim örnekte tüm değerleri kodlanmış olduğunu fark edeceksiniz. Sen geliştirmek gerekir, bu mantığı kullanarak kavramlar geçerli yıl, ay, geçerli, muhtemelen bile getirme, bu değerleri bir depo, vb... ama bilerek gösteri bu yeterli olmalı sizden doğru yolda.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Android Developers

    Android Deve

    9 Kasım 2007
  • jat4011

    jat4011

    16 EKİM 2010
  • MysteryGuitarMan

    MysteryGuita

    16 HAZİRAN 2006