MVC项目,在我的剃刀视图中,在本地运行,这有效:
<script>
var userLeagueID = '@(ViewBag.userLeagueID)';
var playerRank = '@(ViewBag.playerRank)';
var currentTime = new Date('@(ViewBag.TimeTest)')
//.toUTCString()
;
//var currentTime = new Date();
$(document).ready(function () {
if (typeof currentTime !== 'undefined') {
alert(currentTime);
}
});
</script>
但是,当我发布网站时,它无法正常工作,警报状态&#34;无效日期&#34;。
我从服务器代码中获取@ ViewBag.TimeTest,如下所示:
ViewBag.TimeTest = vm.LastPickTime;
(vm.LastPickTime是一个c#DateTime字段。)。我打赌我需要一个在c#端运行的函数,但不确定哪一个,有这么多可供选择?我将尝试一系列不同的功能,看看我是否得到它。
请帮我省时间!
答案 0 :(得分:3)
根据Mat J的评论,我在c#侧找到了我需要的方法/功能。
ViewBag.TimeTest = vm.LastPickTime.Value.ToSTring("o");
为我修好了!非常感谢Mat并感谢其他人提出的其他建议。
答案 1 :(得分:0)
我怀疑你的开发环境和prod环境有不同的CultureInfo
导致DateTime.ToString()
生成不同的结果,并且它似乎在prod上生成无效的日期格式。您可以通过检查脚本来测试它。
不是使用字符串日期实例化Date
,而是使用毫秒:
ViewBag.TimeTest = vm.LastPickTime.UtcNow
.Subtract(new DateTime(1970,1,1,0,0,0,DateTimeKind.Utc))
.TotalMilliseconds;
删除单引号:
var currentTime = new Date(@(ViewBag.TimeTest));
答案 2 :(得分:0)
如何构建vm.LastPickTime
?
我创建了一个可以正常使用的方案:
public ActionResult Index()
{
var test = new TestClass()
{
TimeTest = DateTime.Now
};
ViewBag.TimeTest = test.TimeTest;
return View();
}
public class TestClass
{
public DateTime TimeTest { get; set; }
}
然后在视图中......
<div class="jumbotron">
<h1>Testing Time</h1>
<button id="testButton">click Me</button>
</div>
@section scripts {
<script>
$(document).ready(function () {
var currentTime = new Date('@(ViewBag.TimeTest)');
$("#testButton").click(function () {
if (typeof currentTime !== 'undefined') {
alert(currentTime);
}
});
});
</script>
}