2012-01-19 1 views
1

내가 선택한 드롭 다운 상자를로드하는 페이지가 있지만 자바 스크립트 코드에서이 목록을 다른 것으로 토글하려고합니다. 선택의 집합.asp.net-mvc 사이트에서 드롭 다운 선택 항목을 선택하도록 목록 클라이언트 측을 저장하는 가장 좋은 방법은 무엇입니까

나는

function UpdateDropdown(list, dropdownSelector) { 
var options = ''; 
$.each(list, function (index, value) { 
    if (value.Text == null) { 
     value.Text = ''; 
    } 
    if (value.Value == null) { 
     value.Value = '0'; 
    } 

    options += '<option value="' + value.Value + '">' + value.Text + '</option>'; 
}); 
$(dropdownSelector).html(options); 

}

그래서 그게 문제가되지 않습니다하지만 난 내보기에서 로컬 배열을 저장할 수 있습니다 어떻게 내 질문은 지우고 자바 스크립트 선택 목록 상자를 다시 채 웁니다 코드가 나중에 자바 스크립트에서 조회 할 모델? 숨겨진 선택 상자에 저장해야합니까? 거기에 권장 된 연습이 있습니까?

답변

1

가장 쉽고 깨끗한 해결책은보기에 일부 json을 작성하고 UpdateDropdown 함수 내에서 액세스하는 변수에 저장하는 것입니다. 보기에서 :

<script type="text/javascript"> 
    var globalData = @Html.Raw(Json.Encode(Model.MyArray)); 
</script> 

당신은 출력 JSON으로 사용하는 정확한 방법은 사용중인 ASP.NET MVC의 버전에 따라 다를 수 있지만,이 바른 길에 당신을 둘 것이다.

그리고 일반적인 자바 스크립트 모범 사례는 코드에 대한 하나의 네임 스페이스를 만들어 다른 모든 변수를 넣어 전역 네임 스페이스를 오염시키지 않도록하는 것입니다. 그래서 실제로는 다음과 같이되어야합니다 :

<script type="text/javascript"> 
    var MyApp = {}; 
    MyApp.dropdownData = @Html.Raw(Json.Encode(Model.MyArray)); 
</script> 

그러나 내가 제공 한 첫 번째 코드 블록은 시작하는 것이 좋을 것입니다.

0

레오 라,

난과 MVC 행동 자바 스크립트에서 '목록'을 보내기위한 다음과 같은 솔루션에 의해 영감을했다 :

http://zootfroot.blogspot.com/2011/09/jquery-post-javascript-array-to-aspnet.html

: 당신이 여기 문서를 볼 수 있습니다

var leadIds = $('input.chkTileSelector:checked').map(function() { 
                  return { name: 'leadIds', value: $(this).parents('div.Lead').data('id') }; 
               }).get(); 

$.ajax({ 
    url: '@Url.Action("UnParkLeads", "Lead")', 
    type: 'POST', 
    dataType: 'json', 
    data: leadIds, 
    success: function (result) { 
     ReloadResultGrid(); 
    } 
});