在ASP.NET MVC 3中使用Razor初始化JS数组的首选方法是在我的模型/视图模型中具有哪些值?
例如,初始化表示日期的字符串数组:
<script type="text/javascript"> var activeDates = ["7-21-2011","7-22-2011"]; </script>
同
public class MyViewModel { public DateTime[] ActiveDates { get; set; } }
解决方法
我不太明白JS和ASP.NET MVC 3 Razor之间的关系。无论在服务器上使用哪种技术来生成页面,JavaScript都可以在客户端运行。所以在javascript上,一个数组是一个数组。
在javascript中定义数组的几种可能性
var activeDates = [ '7-21-2011','7-22-2011' ];
要么:
var activeDates = new Array(); activeArrays.push('7-21-2011'); activeArrays.push('7-22-2011');
还是:
var activeDates = new Array(); activeArrays[0] = '7-21-2011'; activeArrays[1] = '7-22-2011';
最后,所有这些代表相同的数组。但它是一系列字符串,而不是日期。
如果你想有一个数组的日期,这里是你可以做的:
var activeDates = [ new Date(2011,6,21,0),new Date(2011,22,0) ];
现在我可以看到与ASP.NET MVC有关的唯一关系就是你的视图模型可能有一些数组:
public class MyViewModel { public DateTime[] ActiveDates { get; set; } }
你想在一个javascript数组中序列化和操作。在这种情况下,这里是语法:
@model MyViewModel <script type="text/javascript"> var activeDates = @Html.Raw(Json.Encode(Model.ActiveDates)); </script>
现在由于DateTime字段是在JSON中序列化的方式,所以您将在生成的HTML中使用以下内容:
var activeDates = ["\/Date(1309471200000)\/","\/Date(1311199200000)\/"];
并且如果你想将这个数组的字符串转换成一个实际的javascript日期的数组:
var dates = $.map(activeDates,function(date,index) { date = date.replace('/Date(','').replace(')/',''); return new Date(parseInt(date)); });
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。