【问题标题】:Create a Javascript object with Viewbag data使用 Viewbag 数据创建 Javascript 对象
【发布时间】:2017-03-28 16:48:29
【问题描述】:

我需要创建一个对象以发送到 javascript 中的函数,但此信息来自我的视图包。

new FleetSelector("False",
[{"OwnerId": "2df3893d-c406-48fe-8443-1622ddc51af2", "DisplayName": "String 1" }, 
{ "OwnerId": "7A402CD7-5EEA-4AF5-80A3-22EED0610C9D", "DisplayName": "String 2" }]);

在我的 viewBag 中,我有一个 Fleets 模型列表,它有一个 Guid OwnerId 和一个 String ownerName,这是我尝试过的,我知道这是错误的,但我想添加它来尝试解释我希望实现的目标

new FleetSelector("False",
                    [ @foreach (var fleet in ViewBag.Fleets)
                    {
                        '{' + '"' + "OwnerId" + '"' + ':' + '"' + fleet.OwnerId + '"' + ',' + '"' + "DisplayName" + '"' + ':' + '"' + fleet.ownerName + '"' + '}'
                    }  }]);

【问题讨论】:

    标签: javascript arrays asp.net-mvc viewbag


    【解决方案1】:

    您必须在 FleetSelector 对象之外填充 array

    new FleetSelector("False",array);
    

    这里是数组定义:

    var array=[];
    @foreach (var fleet in ViewBag.Fleets)
    {
       @:array.push({"OwnerId":@fleet.OwnerId,"DisplayName":@fleet.ownerName});
    }
    

    【讨论】:

      【解决方案2】:

      你可以这样序列化它。

      SerializeObject 方法返回一个字符串,它是 C# 对象的 json 字符串表示形式。

      var fleetsArray= @Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(ViewBag.Fleets))
      console.log(fleetsArray);
      

      【讨论】:

      • 我收到此错误The ObjectContext instance has been disposed and can no longer be used for operations that require a connection.
      • 取决于您如何设置ViewBag.Fleets。您可能需要在代码中使用 ToList() 调用来执行 LINQ 表达式。
      猜你喜欢
      • 1970-01-01
      • 2012-04-07
      • 1970-01-01
      • 1970-01-01
      • 2019-04-05
      • 2013-10-12
      • 2015-02-25
      • 1970-01-01
      • 2015-10-18
      相关资源
      最近更新 更多