我正在尝试使用razor制作动态JSON OBJECT,但我不知道如何在没有','的情况下创建最后一个子项。我正在创建最后一个写作对象,但它给了我任何问题。
我从Oracle数据库获取数据,并在数据列上定义了所有父级和子级别。
模拟我的代码的简短代码:
@{
var itemLevel = Model.LstUnidadesGerenciais.ElementAt(0).Level;
}
var treeData = [
@foreach (var item in Model.LstUnidadesGerenciais)
{
var itemUG = item.Cod_UG; if (itemLevel == item.Level)
{
<text>
{
title: "@item.Nome - @item.Txt_Sigla_UG", key: "@item.Level", icon: false, ug: "@item.Cod_UG", sigla: "@item.Txt_Sigla_UG", expand: true,
children: [
@foreach (var itemFilho in Model.LstUnidadesGerenciais)
{
var itemUGFilho = itemFilho.Cod_UG; if (itemFilho.Cod_UG_Superior == itemUG && itemFilho.Level == item.Level + 1)
{
<text>
{
title: "@itemFilho.Nome - @itemFilho.Txt_Sigla_UG", key: "@itemFilho.Level", icon: false, ug: "@itemFilho.Cod_UG", sigla: "@itemFilho.Txt_Sigla_UG", expand: false
},
</text>
}
}
{
title: "Nome", key: "2", icon: false, ug: "COD", sigla: "COD", expand: false
}
]
},
</text>
}
}
{
title: "Nome", key: "1", icon: false, ug: "COD", sigla: "COD", expand: false
}
];
我不想在'foreach'结束时写这个来解决','问题:
{
title: "Nome", key: "1", icon: false, ug: "COD", sigla: "COD", expand: false
}
答案 0 :(得分:0)
如果您想直接在响应中执行此操作,以下可能是一种方法:
JavaScriptSerializer serializer = new JavaScriptSerializer();
string json = serializer.Serialize((object)yourDictionary);
此选项可归功于(Outputting Json with the Razor view engine)。或者如果你可以使用AJAX,在MVC4中(至少)你可以写下面的
// GET: /Account/
[HttpGet]
public ActionResult Index()
{
object myObject = LoadFromDatabase();
return Json(myObject);
}
在此“LoadFromDatabase”中表示从数据库加载所需的任何内容。 Json调用为您序列化标准JSON格式的对象(有关详细信息,请参阅msdn)。
此代码进入控制器,可以使用AJAX从您的javascript调用。这可能意味着更多往返服务器,但它可以使页面加载时间更快,因为您的页面不必等待数据库调用和json创建,以便返回视图。