ASP.NET MVC JSON结果格式
-
23-09-2019 - |
题
public class JsonCategoriesDisplay
{
public JsonCategoriesDisplay() { }
public int CategoryID { set; get; }
public string CategoryTitle { set; get; }
}
public class ArticleCategoryRepository
{
private DB db = new DB();
public IQueryable<JsonCategoriesDisplay> JsonFindAllCategories()
{
var result = from c in db.ArticleCategories
select new JsonCategoriesDisplay
{
CategoryID = c.CategoryID,
CategoryTitle = c.Title
};
return result;
}
....
}
public class ArticleController : Controller
{
ArticleRepository articleRepository = new ArticleRepository();
ArticleCategoryRepository articleCategoryRepository = new ArticleCategoryRepository();
public string Categories()
{
var jsonCats = articleCategoryRepository.JsonFindAllCategories().ToList();
//return Json(jsonCats, JsonRequestBehavior.AllowGet);
return new JavaScriptSerializer().Serialize(new { jsonCats});
}
}
这结果以下结果:
{"jsonCats":[{"CategoryID":2,"CategoryTitle":"Politika"},{"CategoryID":3,"CategoryTitle":"Informatika"},{"CategoryID":4,"CategoryTitle":"Nova
kategorija"},{"CategoryID":5,"CategoryTitle":"Testna
kategorija"}]}
如果我使用评论的行并放置JSONRESULT而不是返回字符串,我将获得以下结果:
[{"CategoryID":2,"CategoryTitle":"Politika"},{"CategoryID":3,"CategoryTitle":"Informatika"},{"CategoryID":4,"CategoryTitle":"Nova
kategorija"},{"CategoryID":5,"CategoryTitle":"Testna
kategorija"}]
但是,我需要这样的结果以这样的格式:
{'2':'Politika','3':'Informatika','4':'Nova
kateorija','5':'Testna kategorija'}
是否有一种简单的方法可以实现此操作,否则我需要进行硬码结果?
解决方案
看看 json.net库
JSON.NET库使使用JavaScript和JSON格式化数据的.NET Simple中。快速使用JSONREADER和JSONWRITER读取和编写JSON,或使用JSonserializer串行.NET对象。
我已经成功地在.NET MVC项目中使用了它。
其他提示
我相信我已经找到了我原来的问题的答案,除了在我的评论中提出的那个与FLQ讨论。 首先,原始问题的答案是关闭窗口的正确方法是沿着我所描述的“解决方法”所做的线条。关闭应用程序是一个视图启动的进程,因为它是具有如何执行方法的窗口控件。您可以挂钩应用程序.Exit事件,以便您可以在ViewModels上执行清理,提示用户保存数据等。
在与flq的一些有趣讨论后我提出的问题是,如果我不仅仅将控件的生成古代/ p>
可以找到一些有趣的讨论这里,但基本答案是您发现父控件并删除要从其子项列表关闭的控件。注意,这是一种不同的方法,其目标是只是通过设置无法看到的控件是可见性要折叠的。在以下示例中,“此”是要删除的控件(即,“关闭”):
Panel p = (Panel) this.Parent;
p.Children.Remove(this);
.
我不确定您是否仍然需要将子子(即“这个”)设置为null以重新索取其资源,或者如果只是从Visual树中删除它将导致WPF重新索取资源;上述讨论没有提及。如原文讨论,可以通过将其挂钩到某些事件来补充上述技术,或使用其他应用程序特定逻辑。
尝试将其返回作为数组,也可以返回JSONRESULT,您可以保存很多代码(看起来您正在尝试获取想要的格式)
public class ArticleController : Controller
{
ArticleRepository articleRepository = new ArticleRepository();
ArticleCategoryRepository articleCategoryRepository = new ArticleCategoryRepository();
public JsonResult Categories()
{
var jsonCats = articleCategoryRepository.JsonFindAllCategories().ToArray();
return Json(jsonCats, JsonRequestBehavior.AllowGet);
}
}
在我的测试中,我得到了
[{"Id":1,"Name":"Cat 1"},{"Id":2,"Name":"Cat 2"}]