0

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";
    }
1
  • 1
    What are you basing the "only 1 time" on? Cause it looks like it'll run 3 times, but a will always be 1. Commented Feb 20, 2013 at 14:35

3 Answers 3

8

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.

Sign up to request clarification or add additional context in comments.

Comments

4

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.

Comments

1

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.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.