2010-12-12 10 views
2

나는 asp.net mvc에 일부 응용 프로그램이 있습니다. 그리고 테이블 필터를 만들려고합니다. 페이지가 매우 어렵 기 때문에 JSON 응답에서 데이터를 가져올 수 없습니다. 내가 params와 전화 작업을 통해 그것을 얻으려고합니다.새로 고침 asp.net mvc 페이지

function refresh() { 
     var id = $("#list").val(); 
     var params = { id: id }; 
     $.get("/Home/Index", params, null, "json"); 

    } 

<select id="list" onchange="refresh()"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
</select> 
<%foreach (var i in (IEnumerable<int>)ViewData["list"]) 
    { %> 
    <%=i %><br /> 
<%} %> 

    public ActionResult Index(int? id) 
    { 
     if (id == null) 
      id = 0; 

     ViewData["list"] = Enumerable.Range((int)id, 5).Select(i => i).ToList<int>(); 

     return View(); 
    } 

하지만 새로운 데이터가 표시되지 않습니다. 뭐가 문제 야? 페이지를 새로 고침하려면 어떻게해야합니까?

추신 : 액션 A에서 액션 A (매개 변수 포함)로 이동 (리디렉션)하고 싶습니다. 클라이언트 측 페이지 재구성을 원하지 않습니다.

답변

5

get 호출로 검색 한 결과는 아무 것도하지 않습니다. 또한보기를 반환하기 때문에 데이터 형식을 html으로 설정해야합니다.

$.get('/Home/Index', params, function(html) { 
     $('body').html(html); 
    },'html'); 

나는 아마 내가 업데이트되는 부분 만 대체 할 것입니다. 부분 뷰를 사용하여이 섹션을 보유하면 AJAX를 통해 요청을 받으면 전체 뷰가 아닌 부분 뷰 만 반환 할 수 있습니다. 다른 방법은보기 데이터를 사용하는 대신보기를 강력하게 입력하여 IEnumerable<int>으로 만들고 모델을 전달하는 것입니다.

보기

<script type="text/javascript"> 
    $(function() { 
     $('#list').change(function() { 
      var id = $("#list").val(); 
      var params = { id: id }; 
      $.get("/Home/Index", params, function(html) { 
       $('#listResults').replaceWith(html) 
      }, "html"); 
     }); 
    }); 
</script> 

<select id="list"> 
    <option value="1">1</option> 
    <option value="2">2</option> 
    <option value="3">3</option> 
    <option value="4">4</option> 
</select> 
<% Html.RenderPartial("ListResults"); %> 

부분보기

<div id="listResults"> 
<%foreach (var i in Model) 
    { %> 
    <%=i %><br /> 
<%} %> 
</div> 

액션

public ActionResult Index(int? id) 
{ 
    if (id == null) 
     id = 0; 

    var model = Enumerable.Range((int)id, 5).Select(i => i).ToList<int>(); 
    if (this.Request.IsAjaxRequest()) 
    { 
     return PartialView(model); 
    } 
    return View(model); 
} 
1

나는 위의 코드에 한 가지 문제를 참조하십시오

$.get()는하지 않습니다 요청이 완료되면 아무 것도 (서버에서 데이터를 가져온)

null을 전달하는 대신 데이터 인 매개 변수가있는 함수를 전달해야합니다. 예 :

이 기능에
$.get("/Home/Index" 
    , params, 
     function(data){ 
     //do something with data. 
     //data is json object returned 
    }, "json"); 

실제로 필터는 테이블에 적용한 수