剃刀页面javascript仅执行一次C#

时间:2019-04-10 13:59:35

标签: javascript c# azure razor

我正在尝试使用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#方法未更新。

您有什么解决方案吗?

1 个答案:

答案 0 :(得分: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代码中,因此,当文档发送到客户端(您的Web浏览器)时,代码将如下所示:< / p>

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

我将引导您参阅此answer。在那里说明了如何做您想做的事情。