简体   繁体   中英

For Loop With C# Code Behind Method

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

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.

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.

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM