2009-11-13 1 views
1

ASP.Net MVC 1.0 사용하기 일부 입력 컨트롤이있는 폼이 있습니다. 그 중 하나는 드롭 다운 (선택)입니다. 이 드롭 다운이 사용자에 의해 변경되면 RenderPartial() 또는 이와 유사한 것을 사용하여 DIV 태그를 업데이트하려고합니다.선택 태그 변경시 뷰 파트를 업데이트하는 방법

내보기는 현재 다음과 같이 :

<% using (var form = Html.BeginForm()) 
    { %> 
     <label for="FieldIdentifier">Identifier:</label> 
     <%=Html.TextBox("FieldIdentifier", Model.FieldIdentifier)%> 
     ... 

     <label for="DataType">DataType:</label> 
     <%=Html.DropDownList("DataType", Model.AvailableDataTypes)%> 

     <div id="DataTypeOptions"> 
      <% Html.RenderPartial("FieldDataTypeOptions", Model); %> 
     </div> 
     ... 

은 웹 양식에서 내가 찾고 있어요 기능은 드롭 다운과 DIV 주위에 UpdatePanel와 함께 할 수 있습니다. Ajax.BeginForm()이 여기에서 도움이 될 수 있습니까, 아니면 "OnChange"클라이언트 이벤트에서 JScript가 필요합니까? 그렇다면 JScript를 사용하여 뷰의 DIV 부분을 어떻게 업데이트합니까?

도움이 될 것입니다. 드롭 다운의 변화에 ​​따라 DIV를 업데이트 할 경우, 드롭 다운 값에 따라 단지 올바른 부분 뷰를 반환 할 수 있습니다 컨트롤러에서 작업을해야합니다

답변

2

건배, 마크 . jQuery를 사용하여 드롭 다운에 대한 변경 핸들러를 추가하고 jQuery로드를 통해 부분을 가져 오는 액션을 호출하는 것이 좋습니다.

$(function() { 
    $("#DataType").change(function() { 
     $("#DataTypeOptions").load('<%= Url.Action("GetDataTypeOptions") %>?dataType=' + $(this).val()); 
    }); 
}); 

(DIV 이름에 주 변화 - 당신이 오타가 생각하는) 당신이 당신의 "가져 오기"방법이 필요한 경우

public ActionResult GetDataTypeOptions(string dataType) 
{ 
    var model = ... uses dataType to get model ... 

    return Partial("FieldDataTypeOptions", model); 
} 

와 같은 컨트롤러에 대한 작업을

더 많은 입력이 있으면 메소드에 매개 변수를 추가하고 추가 입력 요소의 값에서로드 호출의 매개 변수를 구성하십시오.

+0

내가 찾는 것을 정확하게 보입니다. 한가지 멍청한 질문 : 위의 JQuery 스크립트를 어디에 넣어야합니까? 마크 업 상단의 스크립트 섹션에서? – Marc

+0

일반적으로 본문 요소의 끝 부분 바로 전에 스크립트 태그를 넣어서 마지막에로드합니다. 대부분의 (모든?) 브라우저는 자바 스크립트 요청을 순차적으로 처리하여 모든 코드가 나타나는 순서대로 실행되도록합니다. 처음에로드하면 페이지의 다른 요소가 모두 병렬로로드되는 것을 지연 시키므로 전체 페이지로드가 느려질 수 있습니다. – tvanfosson

+0

나에게 좋은 소리. 여전히 jscript를 제 위치에 놓으려고합니다. webforms-developer로서 아직 jscript 어와 많이하지 않았다;) 그냥 내 몸 끝에 jquery 스크립트를 추가했다. . 그게 내게 "Microsoft JScript 런타임 오류 : 개체 예상"오류가 발생합니다. 무엇을 놓치게합니까? mhhh – Marc