不能从javascript访问ViewBag(有一个JSON对象列表)
Can't access to ViewBag (have a list of JSON objects ) from javascript
在我的ASPMVC代码中我填充了ViewBag。使用下面的代码
设置Contacts变量 var contactsGroups = EntityContext.DBContext.TS_GetConfirmedContacts(typeId,AccountId).GroupBy(c=>c.GroupName);
// JSONGroup Custom object
List<JSONGroup> jsonContactsGroups = new List<JSONGroup>();
foreach (var group in contactsGroups)
{
jsonContactsGroups.Add(new JSONGroup
{
GroupName = group.Key,
Objects = new List<object>(group.ToList())
});
}
var result = new JsonResult
{
Data = jsonContactsGroups,
JsonRequestBehavior = JsonRequestBehavior.AllowGet
};
ViewBag.Contacts = result;
当我试图访问ViewBag。
var contactData = '@ViewBag.Contacts';
调试后返回字符串[from console]
var contactData = 'System.Web.Mvc.JsonResult';
不能使用JsonResult返回Json格式的字符串。JsonResult类继承自ActionResult类,因此返回值是一个包含Json格式的'Data'属性和一些其他响应属性的对象。因此,使用@符号输出结果,将返回类的名称作为字符串。如果你想将一个对象序列化为Json对象,请使用Newtonsoft的Json。.NET序列化器或使用.NET内置的JavaScriptSerializer类。
Newtonsoft:
String serializedResult = JsonConvert.SerializeObject(jsonContactsGroups);
JavaScriptSerializer:
var serializer = new System.Web.Script.Serialization.JavaScriptSerializer() ;
String serializedResult = serializer.Serialize(result);
然后将Json序列化字符串返回给视图:
ViewBag.Contacts = serializedResult;
但是如果你想返回一个Json模型或结果到视图,我建议你写你的动作方法作为JsonResult方法。
使用Html。Raw和Json。编码和
var model = @Html.Raw(Json.Encode(ViewBag.Contacts));
// fetch data
$.each(model.Data, function() {
console.log($(this).attr("GroupName"));
});
使用JSON。Net(它可能已经被引用,因为MVC使用它作为默认序列化器)
using Newtonsoft.Json;
ViewBag.Contacts = JsonConvert.SerializeObject(jsonContactsGroups, Formatting.Indented);
相关文章:
- jQuery匹配JSON对象的部分文本
- 如何在Javascript中将JSon对象转换为数组
- 我可以在json对象中添加一个函数吗
- 使用JS将数组转换为json对象
- 如何为json对象中的段发送array[]
- 将JSON对象传递给angular指令
- 更改JSON对象的结构
- 访问JSON对象内部的数组元素
- 在ejs-partial中对JSON对象进行迭代
- 遍历 JSON 对象并检查 URL 是否以某个值结尾
- 访问嵌套JSON对象的键,其中键是动态的
- json对象中缺少对象循环
- 发送json对象或使用express路由呈现视图
- 在play2框架中向json对象添加下拉列表项
- 元素名称上带有短划线 (-) 字符的 Json 对象
- autocomplete不接受源的json对象
- 如何在javascript中创建动态json对象
- 在使用客户端脚本时拾取JSON对象
- 如何通过json对象数组为嵌套对象赋值
- 构造JSON对象