【问题标题】:How to add Mvc4 Model items to jquery array in mvc4?如何将 Mvc4 模型项添加到 mvc4 中的 jquery 数组?
【发布时间】:2016-08-30 08:44:13
【问题描述】:

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

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 个详细信息按clientId.upldId 放到 jquery 数组中。这是否可以将模型项推送到 jquery 数组。我尝试过这样的事情,但没有运气。 var listArray = new Array();

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

【问题讨论】:

  • 你可以使用var ids = @Html.Raw(Json.Encode(Model.detailsbyclientId.Select(x =&gt; x.upld_Id)))创建你的数组但是查询应该在服务器上,而不是在客户端上。
  • 我实现了。现在 ids 持有所需的值。我可以知道哪个查询应该在服务器上吗?
  • 你的视图模型应该有一个属性(比如)IEnumerable&lt;int&gt; Ids,并在 GET 方法中 - model = new detailsbyclientIdviewModel() { Ids = pagedLog.Select(x =&gt; x.upld_Id), detailsbyclientId = pagedLog } 然后在视图中 var ids = @Html.Raw(Json.Encode(Model.Ids))
  • 是的,我明白了。但我在脚本中编写了查询,它也可以正常工作。无论如何,我通过在服务器端编写查询来实现你所说的。多谢。你能回答吗?

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


【解决方案1】:

您不能像这样混合 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)))

【讨论】:

    猜你喜欢
    • 2014-02-16
    • 2013-06-06
    • 1970-01-01
    • 2013-09-21
    • 1970-01-01
    • 2013-01-31
    • 2012-07-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多