在我的MVC视图中,我需要使用razor c#代码在页面加载后的不可预测的时间执行javascript函数。
我使用了一个线程来模拟不可预测性,但最终它不是线程,它将是一个WCF回调方法,它引发一个运行帮助器的事件,但是为了消除我使用该线程的会话问题。
要执行的Javascript:
<script type="text/javascript">
function DisplayNews(news) {
alert(news);
}
</script>
运行javascript的帮助程序(因为直接在下面的帖子中粘贴它并没有工作)
@helper UpdateNews(string news)
{
<script>
DisplayNews(news);
</script>
}
模拟不可预测性/帖子后页面加载或非用户调用事件的线程
@{
System.Threading.Thread T = new System.Threading.Thread(new System.Threading.ThreadStart(delegate
{
while (true)
{
System.Threading.Thread.Sleep(5000);
UpdateNews("Some cool news");
}
}));
T.Start();
}
如果我在UpdateNews("Some cool news");
处坚持一个断点,我可以看到它每隔5秒就会被击中,但就其而言,只要它得到,就没有其他事情发生。我无法在帮助者或Javascript中找到一个断点,因此我无法在此之后看到它停止工作的位置。
这是否会起作用或是否有其他方式我应该接近这个?
非常感谢任何帮助。
答案 0 :(得分:0)
在服务器端代码中,您可以调用客户端函数...
Razor在服务器端执行,javascript在客户端。这意味着当你得到服务器响应时它是由服务器端的剃刀代码创建的,现在你可以在客户端使用javascript
答案 1 :(得分:0)
我可能误解了你要做的事情但是你可以使用javascript来运行页面加载,它将被包含在一个随机毫秒周期的设置超时中。
这样的事情:
<script>
window.onload = function() {
setTimeout(function() {}, 1000); // this will run 1 second after page load
}
</script>
只需将作为第二个参数传递的数字随机化为setTimeout,您的javascript将在页面加载后的随机时间运行。