2013-02-20 81 views
0

當我在後面的代碼調試它讓我去「測試」方法只有一次,而不是三次,爲什麼?我看到我有JavaScript「for循環」,它應該在C#「Test」方法中進行三次。但它只有一次,這是正常的嗎?我想通過三次「測試」方法,正如我在JavaScript中所說的「for循環」。哪裏有問題 ?For循環與C#代碼隱藏方法

ASPX代碼:

<script> 
    $(function() { 
     for (var i = 0; i < 3; i++) { 

      console.log("active"); 
      var a = '<%= this.Test() %>'; 
     } 
    }); 
</script> 

C#代碼背後:

public string Test() 
    { 
     int a = 1; 
     return "active"; 
    } 
+1

你是基於「只有一次」嗎?因爲它看起來會運行3次,但'a'將始終爲'1'。 – MyCodeSucks 2013-02-20 14:35:27

回答

4

一旦瀏覽器加載你正在寫的Test功能作爲一個字符串到JavaScript,然後將執行結果頁。

如果您想從頁面本身運行3次Test,您需要查看各種Ajax庫之一。

8

this.Test()不會在您的for循環中調用javascript。它被稱爲服務器端來評估它。

這樣看。你的JavaScript真的說渲染後如下:

<script> 
    $(function() { 
     for (var i = 0; i < 3; i++) { 

      console.log("active"); 
      var a = 'active'; 
     } 
    }); 
</script> 

這樣做的原因是在ASP.NET的工作方式。它需要你的xhtml和服務器端代碼,並將html渲染回客戶端。客戶然後有機會執行它的任何代碼。 Javascript是在客戶端執行的。

1

代碼只在所有情況下執行一次。 JavaScript上的for循環不會執行c#3次。相反,頁面只輸出一次,因爲<%= this.Test() %>是在服務器上一次性解釋的輸出塊。然後解釋你的腳本客戶端。