我正在尝试构建一个托管在 Azure 上的免费网站,它使用 MVC4 和 KnockoutMVC。该网站每 4 秒从控制器更新一次表格。代码在本地执行没有问题,但是当我将它部署到 Azure 网站时,它不会处理更新。
我现在已经开始了一个全新的 MVC 4 项目,其中包含一些使用敲除的简单功能,显示当前时间,并从控制器每隔 0.5 秒更新一次,它使用与我编写的 javascript 相同的结构适当的网站。它给出了同样的问题,看起来好像 ko.ServerAction 调用正在停止 javascript 函数。
看法
@using PerpetuumSoft.Knockout
@model MVCHelloWorld.Models.HelloWorldModel
@{
var ko = Html.CreateKnockoutContext();
}
<script type="text/javascript">
function startTime() {
var today = new Date();
var h = today.getHours();
var m = today.getMinutes();
var s = today.getSeconds();
// add a zero in front of numbers<10
m = checkTime(m);
s = checkTime(s);
document.getElementById('time').innerHTML = h + ":" + m + ":" + s;
@ko.ServerAction("Index", "HelloWorld");
t = setTimeout(function() { startTime(); }, 500);
}
function checkTime(i) {
if (i < 10) {
i = "0" + i;
}
return i;
}
</script>
<body onload="startTime()">
<h2>Hello World - 2</h2>
<div id="time"></div>
<label>Knockout time</label>
@ko.Html.Span(m => m.Time)
</body>
@ko.Apply(Model)
控制器
namespace MVCHelloWorld.Controllers
{
public class HelloWorldController : BaseController
{
public HelloWorldModel model = new HelloWorldModel();
public ActionResult Index()
{
GetTimeDoCalculation();
return View();
}
public void GetTimeDoCalculation()
{
model.Time = DateTime.Now.ToString("H:mm:ss");
}
}
}
模型
namespace MVCHelloWorld.Models
{
public class HelloWorldModel
{
public string Time { get; set; }
}
}