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
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.
Standart bir klavye kısayolu Visual St...
Orada C sayılarını oluşturmak için kol...
Bir döngü içinde nesne harfleri bir di...
Bir resim kullanarak daha yukarı div o...
Nasıl bir sınıf içinde bir şablon işle...