2009-10-20 6 views
3

과 같이 jQuery를에서 .NET MVC을 ViewData에 액세스 할 수 사용자가 드롭 다운을 변경하면 입력 필드가 현재 선택된 사용자로 업데이트됩니다.어떻게 직접 내 aspx 페이지에을 ViewData를 전달하고

영문 페이지 :

<p> 
    <%= Html.DropDownList("userSelected", (List<SelectListItem>)ViewData["FormattedUserList"])%><br /><br /> 

    <%= Html.TextBox("userFName")%><br /> 
    <%= Html.TextBox("userLName")%><br />  
    <%= Html.TextBox("userEmail")%> 
</p> 

내가하는 작업 드롭 다운 변화를 감지하기 위해 jQuery를 후크하지만 어떻게 데이터 입력 상자를 조작 할 수 있습니까?

<script type="text/javascript"> 
    $(document).ready(function() { 
    $("#userSelected").change(function() { 
     var pkUser = $("#userSelected").val(); 
     alert("Current UserID is " + pkUser); //works up to here just fine 
     $("#userFName).val() = ViewData["UserList"].Select(x => x.pkUser == valueOfDropDown).fName; ??? 
     . 
     . 
     . 
    }); 
    }); 
</script> 

나는 완전히 잘못하고 있습니까? 이 시나리오에 가장 적합한 방법이 무엇인지 지적 할 수 있습니까? 내가 이상적인 포스트 백이 없어진다면. 자바 스크립트는 클라이언트 측을 실행하고, C#을은 서버 측을 실행하는 당신이 당신의 자바 스크립트와 C#을 혼합하는 것 같습니다

소울 (MVC 초보자는)

답변

6

기억. 즉, 클라이언트 측에서 사용하도록 javascript 주위에 매달려있는 일부 뷰 데이터를 갖고 싶다면 자바 스크립트에서 페이지를 캡슐화해야합니다. 대부분의 경우

<% 
    var serializer = new System.Web.Script.Serialization.JavaScriptSerializer(); 
%> 

<script type="text/javascript"> 
    var users = <%= serializer.Serialize(ViewData["UserList"]) %>; 

    //Use the users variable now with a copy of the view data. 
</script> 
+0

고맙습니다. 근본적으로 서버 코드를 클라이언트 측과 병합하는 것이 잘못되었다는 것을 알고있었습니다. 아마 MVC에서 가능할 것으로 기대하고있었습니다. 어쨌든 도와 주셔서 감사합니다. – soul

1

, 정적 자바 스크립트 파일을 가지고하는 것이 좋습니다 : 내가 생각할 수있는 가장 쉬운 방법은 가지처럼 JavaScriptSerializer를 사용하고 자바 스크립트로 값을 포함하는 것입니다. 보편적으로 그런 것은 아니지만 런타임에 함께 구문 분석되는 코드를 관리하는 것이 매우 어렵습니다. 따라서 스크립트 태그에 서버 측 코드를 작성하는 것보다는 (예를 들어 끊어지는 것처럼 보이는) 페이지의 숨겨진 부분에 데이터를 쓰고 아마 그 데이터를 jQuery로 가져와야합니다.

나중에 사용할 데이터의 값으로 숨겨진 양식 요소를 출력 할 수 있어야합니다.

는 출력했다 말 :

<script type="text/javascript"> 
    var data = <% serialized_data_from_the_server_side %>; 
</script> 

그런 다음 줄을 것 나누기 : 당신이 혼란이 방법을 찾을 경우

<input type="hidden" id="fname_store" name="fname" value="soul" /> 

이 또한 인라인 스크립트에 설정되어있는 하나의 변수가 될 수 다음과 같아야합니다.

$('#userFName').val($('#fname_store').val()); 

코드에 견적이 누락되어 있습니다. t를 셀렉터의 끝에 추가하고, jQuery val() 함수가 값을 전달하여 값과 동일하게 설정하지 않음을 알 수 있습니다.

행운을 빈다.

0

언제든지 작업을 업데이트 할 수 있습니다.

List<user> userList = Data.GetAllUsersForCompany(companyId); 
List<SelectListItem> dropDownList = FormatUserList(userList); 

return Json(new { UserList = userList, FomattedUserList = dropDownList}); 
관련 문제