如何在mvc4中将mvc4 Model项添加到jquery数组?

时间:2016-08-30 08:44:14

标签: jquery arrays asp.net-mvc asp.net-mvc-4

我使用的是一种模式,结构如下。

public class detailsbyclientIdviewModel
    {
        public int upldId { get; set; }
        public IPagedList<detailsbyClientId> detailsbyclientId { get; set; }
    }

这是我的控制器代码。

List<detailsbyClientId> detailsbyclient = objBAL.detailsbyclient(cId);
            IPagedList<detailsbyClientId> pagedLog = detailsbyclient.ToPagedList(pageNumber, pageSize);
            detailsbyclientIdviewModel model;
            model = new detailsbyclientIdviewModel()
            {
                detailsbyclientId = pagedLog
            };

例如detailsbyclientId中有8个项目。例如,我可以检索和显示每个项目,如下所示。

@foreach (var group in Model.detailsbyclientId)
        {
            <tr>
                <td> @group.clientName </td>
           </tr>
        }

与上面相同,我有一个属性detailsbyclientId.upldId。 例如,如果我的detailsbyclientId有5个项目,那么我的detailsbyclientId.upldId中有5个项目。我想把所有这5个detailbyclientId.upldId放到jquery数组中。是否可以将模型项推送到jquery数组。我尝试过类似的东西,但没有运气。 var listArray = new Array();

@foreach(var data in Model.detailsbyclientId)
    {
        listArray.push(data.upld_Id);
    }

1 个答案:

答案 0 :(得分:0)

您不能将razor(服务器端代码)和javascript(客户端代码)混合在一起(foreach在发送到客户端之前在服务器上运行,listArray是一个javascript变量那时不存在。你可以使用

var listArray = @Html.Raw(Json.Encode(Model.detailsbyclientId.Select(x => x.upld_Id)))

虽然查询应该在控制器中,而不是视图。将属性添加到视图模型

public IEnumerable<int> Ids { get; set; }

并将控制器代码修改为

List<detailsbyClientId> detailsbyclient = objBAL.detailsbyclient(cId);
IPagedList<detailsbyClientId> pagedLog = detailsbyclient.ToPagedList(pageNumber, pageSize);
detailsbyclientIdviewModel model = new detailsbyclientIdviewModel()
{
    Ids = pagedLog.Select(x => x.upld_Id), 
    detailsbyclientId = pagedLog
};

并在视图中

var listArray = @Html.Raw(Json.Encode(Model.Ids)))