2012-07-18 2 views
0

ViewBage 속성 값을 가져 와서 jQuery 메서드에 전달하는 동안 문제가 발생했습니다. 예를 들어, 아래 코드에서 @ ViewBag.CountResult는 값 1을 가지며 내 브라우저에 표시되지만 updateResultFooter 메서드에 전달되면 ""과 같습니다! 이유는 모르겠다. 아래로 내 견해입니다. 어떤 도움이 필요합니까? 사전에ViewBag 속성을 jQuery 메서드로 전달할 수 없습니다.

덕분에

<div> 
    <div> 
     <span>Téléphone ?</span> 
     <input id="idTxTel" type="text" name="txTelephone"/> 

     <input id="idBnSearch" type="submit" value="Chercher" name="bnSearch"/> 
    </div> 
    @Html.Partial("_Result", Model) 
</div> 

<script type="text/javascript"> 
    var methodUrl = '@Url.Content("~/Search/GetReverseResult/")'; 

    $(document).ready(function(){ 
     updateResultFooter("@ViewBag.CountResult", "@ViewBag.PageNumber", "@ViewBag.PageCount"); 

     $("#idBnSearch").click(function(){   
      var telValue = $("#idTxTel").val(); 

      pageIndex = 0; 
      doReverseSearch(telValue, pageIndex, methodUrl); 
      updateResultFooter("@ViewBag.CountResult", 0, "@ViewBag.PageCount"); 
     }); 

     $("#bnNextPage").live("click", function(){ 
      var telValue = $("#idTxTel").val(); 

      pageIndex = pageIndex + 1; 
      doReverseSearch(telValue, pageIndex, methodUrl); 
      updateResultFooter("@ViewBag.CountResult", pageIndex, "@ViewBag.PageCount"); 
     }); 
    }); 

    function updateResultFooter(resultCount, pageIndex, pageCount){ 
     if (resultCount == '0') 
      $("#resultFooter").hide(); 
     else 
     { 
      $("#resultFooter").show(); 

      if (pageIndex == 0) 
       $("bnPreviousPage").attr('disabled', 'disabled'); 
      else 
       $("bnPreviousPage").removeAttr('disabled'); 

      if ((pageIndex + 1) == pageCount) 
       $("bnNextPage").attr('disabled', 'disabled'); 
      else 
       $("bnNextPage").removeAttr('disabled'); 
     } 
    } 

    function doReverseSearch(telValue, pageIdx, methodUrl){ 
    $.ajax({ 
      url: methodUrl, 
      type: 'post', 
      data: JSON.stringify({ Telephone: telValue, pageIndex: pageIdx }), 
      datatype: 'json', 
      contentType: 'application/json; charset=utf-8', 
      success: function (data) { 
       $('#result').replaceWith(data); 
      }, 
      error: function (request, status, err) { 
       alert(status); 
       alert(err); 
      } 
     }); 
    } 
</script> 

PS : 나는 사용자가 만든 검색 결과에 따라 웹 페이지의 표시를 수정하려면이 코드를 사용하고 있습니다.

+0

@ ViewBag.CountResult에 문제가 있습니까? 이 코드로 @ ViewBag.PageCount의 값을 얻고 있습니까? –

+1

브라우저에서 소스를 볼 때 'updateResultFooter' "1"또는 ""의 첫 번째 인수는 무엇입니까? – MrOBrian

+0

첫 번째 인수는 빈 문자열 ""입니다.이 값은 jQuery에서 ViewBag에서 가져 오려는 모든 변수에 적용됩니다. – SidAhmed

답변

0

내가 사용하고있는 접근 방식을 변경했습니다. 이제, 내 모델을 변경하여 표시하고자하는 데이터 (예 : CountResult, PageCount)를 포함합니다. 그리고 지금은 잘 작동합니다.

관련 문제