Reputation: 1437
When I debug in code behind It let me to go inside "Test" method only one time, not three times, why ? I see that I have javascript "for loop" which should go three times inside C# "Test" method. But it goes only one time, is this normal ? I want to go through "Test" method three times as I said in javascript "for loop". Where is the problem ?
aspx code:
<script>
$(function () {
for (var i = 0; i < 3; i++) {
console.log("active");
var a = '<%= this.Test() %>';
}
});
</script>
C# code behind:
public string Test()
{
int a = 1;
return "active";
}
Upvotes: 0
Views: 817
Reputation: 26076
The code only executes once in all cases. The for loop on the JavaScript will not execute the c# 3 times. Instead, the page is output only once as the <%= this.Test() %>
is an output block that is interpreted a single time on the server. Your script clientside is then interpreted.
Upvotes: 1
Reputation: 18142
this.Test()
is not being called in your for
loop in javascript. It is being called server-side to evaluate it.
Look at it this way. Your javascript really says the following after rendering:
<script>
$(function () {
for (var i = 0; i < 3; i++) {
console.log("active");
var a = 'active';
}
});
</script>
The reason for this is in the way ASP.NET works. It takes your xhtml and server-side code and renders html to spit back to the client. The client then has a chance to execute any of its code. Javascript is executed client-side.
Upvotes: 8
Reputation: 17808
You are writing the result of the Test
function as a string into the javascript, which will then execute once the browser loads the page.
If you want to run Test
3 times from the page itself, you'll want to look into one of the various Ajax libraries.
Upvotes: 4