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"}]
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top