2016-10-22 7 views
-1

그래서 저는 많은 정보가 필요하기 때문에 사용자가 페이지에서 기대할 수있는 결과를 좁힐 수있는 일부 컨트롤을 사용하여 일부보기를 사용자 정의하는 작업을하고 있습니다.MVC 5 드롭 다운 목록

내 intellisense는 VS2015에서 깨졌습니다. 그래서 나는 어둠 속에서 조금 움찔합니다.

그래서 한 달에 몇 개의 드롭 다운 목록이 채워졌습니다. 아니 예쁜,하지만 그것은 작동 : 이제

@Html.DropDownList("Month", new List<SelectListItem> 
      { 
       new SelectListItem { Text = "January", Value = "1"}, 
       new SelectListItem { Text = "February", Value = "2"}, 
       new SelectListItem { Text = "March", Value = "3"}, 
       new SelectListItem { Text = "April", Value = "4"}, 
       new SelectListItem { Text = "May", Value = "5"}, 
       new SelectListItem { Text = "June", Value = "6"}, 
       new SelectListItem { Text = "July", Value = "7"}, 
       new SelectListItem { Text = "August", Value = "8"}, 
       new SelectListItem { Text = "September", Value = "9"}, 
       new SelectListItem { Text = "October", Value = "10"}, 
       new SelectListItem { Text = "November", Value = "11"}, 
       new SelectListItem { Text = "December", Value = "12"} 
      }, "Month") 
      @Html.DropDownList("Year", new List<SelectListItem> 
      { 
       new SelectListItem { Text = Convert.ToString(DateTime.Now.Year - 1), Value = Convert.ToString(DateTime.Now.Year - 1)}, 
       new SelectListItem { Text = Convert.ToString(DateTime.Now.Year), Value = Convert.ToString(DateTime.Now.Year), Selected = true}, 
       new SelectListItem { Text = Convert.ToString(DateTime.Now.Year + 1), Value = Convert.ToString(DateTime.Now.Year + 1)}, 
      }, "Year") 

드롭 다운 중 하나가 변경 될 때, 나는 DD 목록의 내용이보기 내 컨트롤러에 모두 컨트롤에서 드롭 다운 선택을 보내고 싶어요 . 거기에서 페이지를 새로 고칠 수 있습니다. DropDownList의 유일한 생성자는 매개 변수가 없으므로 MSDN 설명서가 명확하지 않으므로 이벤트 기반 항목을 어디로 이동해야하는지 명확하지 않습니다.

+0

질문하는 내용이 명확하지 않은 경우 - 양식에있는 경우 선택한 값이 컨트롤러에 게시되지만 DD 목록의 내용과 의미는 무엇입니까 _? (그리고 아니, 그 _ 가장 예쁜 - 그 끔찍한). 그리고 무엇이 당신을 언급하고 있습니까? –

+0

"그리고 아니, 그게 가장 예쁜 것 - 그 끔찍한 것"- 그것을 문지르 기 주셔서 감사합니다. 나는 그 때가 얼마나 추한 지 잘 알고 있습니다. –

답변

0

이 사용법을 처리하는 한 가지 방법은 SELECT 요소를 form 안에 유지하고 select 요소에서 변경 이벤트가 발생하면 제출하는 것입니다.

@using (Html.BeginForm("Index","Home",FormMethod.Get)) 
{ 
    <!-- your existing code for SELECT elements goes here--> 
} 

이제 SELECT 요소에 change 이벤트를 수신하고 가장 가까운 양식을 제출할 수 있습니다. Index 동작 방법은 가정

$(function() { 

    $("#Year,#Month").change(function() { 
     $(this).closest("form").submit(); 
    }); 

}); 

폼 태그 (POST 동작)와 요소를 감싸는 paratmeters

public ActionResult Index(int? year,int? month) 
{ 
    // Check the year and month values, if not null, use them to filter your data 
    // to do : Return something 
} 
0

로 연월을 받아 들인다. 이 라인은 당신의 드롭 다운의 변경 이벤트를 bindig있다

@using (Html.BeginForm("Index", "Home", FormMethod.POST, new { id = "MyForm" })) 
    { 
     @Html.DropDownList("Month", *your data*, "select month", new{ onchange = "document.getElementById('MyForm').submit();" }) 

     @Html.DropDownList("Year", *your data*, "select year", new{ onchange = "document.getElementById('MyForm').submit();" }) 

     <input type='submit' value='make the magic' /> 
    } 

: 서버 측에

같은 년, 월 PARAMS이 모델을 만들 :

public class MyModel{ 
    public string Month {get;set;} 
    public string Year {get;set;} 
} 

을하고 HTML은 무언가 같이해야 ID로 양식을 찾고 제출하십시오.

new {onchange = "document.getElementById ('MyForm'). submit();"

+0

Severside에 이미 데이터 모델이 있습니다.보기에 다른 모델을 추가하는 방법은 무엇입니까? –

+0

을 js와 함께 제출하면 어떤 양식이나 양식을 제출할 수 있습니다 ... 및 고유 한 ID를 가진 다른 양식에 모든 입력을 넣고 입력 변경시 제출할 수 있습니다 ... – danigitman