Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/433.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过javascript使用视图模型和Razor_Javascript_Asp.net Mvc 3_Razor_Viewmodel - Fatal编程技术网

通过javascript使用视图模型和Razor

通过javascript使用视图模型和Razor,javascript,asp.net-mvc-3,razor,viewmodel,Javascript,Asp.net Mvc 3,Razor,Viewmodel,我有一个包含“歌曲”列表的视图模型。 现在我不想让视图遍历所有列表,所以在java脚本中我做了: $(window).scroll(function () { if ($(window).scrollTop() + $(window).height() + 5 > $(document).height()) { @foreach (var item in Model.Songs.Skip(Number).Take(20)) {

我有一个包含“歌曲”列表的视图模型。 现在我不想让视图遍历所有列表,所以在java脚本中我做了:

$(window).scroll(function () {
    if ($(window).scrollTop() + $(window).height() + 5 > $(document).height()) {    
        @foreach (var item in Model.Songs.Skip(Number).Take(20))
        {
             //do something
        }
        Number = Number + 20;
    }
});

问题是Razor变量'Number'没有更改,所以我总是加载相同的条目。我不想每次滚动器到达底部时都进行ajax调用,我已经有了页面的模型,我只是不想立即处理所有的模型。

实现这一点的最好方法是将模型集合解析为javascript对象(数组)

首先,您需要创建html助手方法(在其他情况下仍然有用),如

然后将模型属性转换为js对象

<script>
    var songs = @Html.ToJson(Model.Songs.Skip(Number).Take(20))
</script>

var songs=@Html.ToJson(Model.songs.Skip(Number.Take(20))
就这些。对我有用

<script>
    var songs = @Html.ToJson(Model.Songs.Skip(Number).Take(20))
</script>