복붙노트

[JQUERY] C 번호와 ASP.NET MVC 3의 폭포 드롭 다운을 만들 수있는 가장 쉬운 방법

JQUERY

C 번호와 ASP.NET MVC 3의 폭포 드롭 다운을 만들 수있는 가장 쉬운 방법

해결법


  1. 1.언제나 당신은 모델로 시작 :

    언제나 당신은 모델로 시작 :

    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()
                });
            }
        }
    }
    

    다음 컨트롤러 :

    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
            );
        }
    }
    

    그리고 마지막으로보기 :

    @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>
    

    분명히 당신은 내 예제에서 나는 모든 값을 하드 코딩 한 것을 알 수 있습니다. 당신은 아마 등의 저장소에서 해당 값을 가져, 현재 연도, 현재 달과 같은 개념을 사용하여이 논리를 개선해야한다 ...하지만 시위의 목적이 바른 길에 당신을 넣어 충분합니다.

  2. from https://stackoverflow.com/questions/5497524/easiest-way-to-create-a-cascade-dropdown-in-asp-net-mvc-3-with-c-sharp by cc-by-sa and MIT license