Razor页面javascript只执行一次c#

问题描述 投票:0回答:1

我正在尝试使用javascript循环来更新c#代码中的数据。但它只执行一次c#方法。

我做了一个测试课:

public class testClass
{
    public static int result;
    public static int nb1;

    public static int add()
    {
        result = result + 1;    
        return result;            
    }    
}

在我的JavaScript中我做了这个:

<script>    
    setInterval(Testing,3000);
    nb1 = 0;
    function Testing() {                
      nb1 = nb1 + 1; //this is to test that the function really restart after 3 seconds
      document.getElementById('label').innerHTML = nb1 + " | " + @testClass.add(); ; // calling my c# method and print into a html label
    }

它显示在页面上:this is what is displayed on my html page

正如你可以看到显示javascript函数在3秒后重新启动的数字,但是c#方法没有更新。

你有什么解决办法 ?

javascript c# azure razor
1个回答
1
投票

看起来你并不真正理解HTML,JS和C#是如何协同工作的。当向您的服务器发出请求时,它将执行计算以返回文档。本文档以HTML格式呈现,并以JS的形式添加逻辑以补充它。

使用Razor时,您可以有效地使用C#来帮助构建文档,但不能在运行时使用。如果您希望前端文档能够与后端C#代码进行交互,则必然会使用套接字(例如SignalR)或AJAX(这将是网页和背面之间最突出的异步通信方式)结束)。

我会通过你的代码来帮助你理解..

您的剃刀页面将开始构建。在某一点上,它将检测以下行:

document.getElementById('label').innerHTML = nb1 + " | " + @testClass.add(); ; // calling my c# method and print into a html label

这是它将调用C#方法,将其转换为值,并将值放在JS代码中的位置,因此当文档发送到客户端(您的webbrowser)时,代码将如下所示:

document.getElementById('label').innerHTML = nb1 + " | " + {THE CALCULATED VALUE} ; // calling my c# method and print into a html label

我会把你推荐给这个answer。在哪里解释如何做你想做的事情。

© www.soinside.com 2019 - 2024. All rights reserved.