2012-07-17 77 views
0

當嘗試使用jQuery獲取視圖上的本地int變量的值時,有一點問題。所以,我有一個主視圖,正如你可以在下面的代碼中看到的那樣,當我嘗試通過在局部視圖中處理按鈕的單擊事件來獲取indexPage的值時,我使用名爲「_Result」的局部視圖,我得到0,事件,如果我初始化我的變量的另一個值(例如5)。任何想法爲什麼?使用jQuery獲取本地變量值

預先感謝

我的觀點:

@model System.Data.DataTable 

@{var pageIndex = 5;} 

<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"> 
    $(document).ready(function() { 
     $("#idBnSearch").click(function() { 
      //The right value (5) 
      alert('@pageIndex'); 

      var telValue = $("#idTxTel").val(); 
      var methodUrl = '@Url.Content("~/Search/GetReverseResult/")'; 

      '@{pageIndex = 0;}' 
      doReverseSearch(telValue, '@pageIndex', methodUrl); 
     }); 

     $("#bnNextPage").live("click", function() 
     { 
      //Not th right value (0) 
      alert('@pageIndex'); 
     }); 
    }); 
</script> 

我doReverseSearch方法:

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); 
       } 
      }); 
    } 

我的局部視圖:

<div id="result"> 
    <h2>Résultat de la recherche</h2> 
    <div>@ViewBag.CountResult entreprises trouvées</div> 

    @if(Model != null) 
    { 
     foreach (DataRow row in Model.Rows) 
     { 
      <h3>@row["CompanyName"]</h3> 
     } 
    } 

    <hr /> 
    <div> 
     <span>Page N sur M</span> 
     <input id="bnPreviousPage" type="submit" value="Précédant" name="bnPrevious"/> 
     <input id="bnNextPage" type="submit" value="Suivant" name="bnNext"/> 
    </div> 
</div> 
+0

哪些呢你的javascript看起來像? – Jason 2012-07-17 00:21:43

+0

當你查看源代碼時,你看到每個alert('@ pageIndex');'?我沒有看到任何方式可能會出錯,因爲您正在生成一個值到視圖(而不是部分視圖)。如果點擊事件沒有激發用'live'完成的事件,那將是另一件事... – 2012-07-17 00:21:47

+0

我不明白它的意思,但是因爲它沒有給出正確的值,這意味着有問題一些地方! #idBnSearch中的警報給我5,#bnNextPage中的警報給我0 – SidAhmed 2012-07-17 00:25:02

回答

0

內的JavaScript剃刀已經被包裹在塊

,所以你可以這樣做:

<script> 
// global value for page 
<text> 
var myPage = @pageIndex; 
<text> 
</script> 

這將是更容易的是給按鍵數據頁的屬性,並在click事件問屬性:

<button data-page="@("pageIndex")" id="myButt" /> 

$("#myButt").on("click",function(e){ 
    var pageIndex = $(this).attr("data-page"); 
    alert(pageIndex); 
}); 
+0

感謝您的回覆,關於您的第二次細分,NextButton在部分視圖中,所以我無法賦予其與@pageIndex值的屬性。 – SidAhmed 2012-07-17 08:58:18

+0

我不認爲我對你的理解很好,當你說:「JavaScript內部的剃鬚刀必須包裝在一個塊」,然後把上面的例子給我,你能解釋更多嗎? – SidAhmed 2012-07-17 09:03:17

+0

你可以傳遞一個字符串或一個int到局部,它並不重要,它是局部的,它仍然可以接受模型內容,所以它可以接受你的pageIndex Int作爲腳本,這裏有不少關於主題,嘗試這一個:http://stackoverflow.com/questions/4045308/razor-syntax-and-javascript/4047382#4047382但我會去模型,如果你的工作和建設一個MVC網站,你有模型傳遞給你的頁面,只是傳遞給你的部分! :-) – davethecoder 2012-07-17 09:25:15