1
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'}

これを実現する簡単な方法はありますか、それとも結果をハードコーディングする必要がありますか?

4

3 に答える 3

2

Json.Netライブラリをご覧ください

Json.NETライブラリを使用すると、.NETでJavaScriptおよびJSON形式のデータを簡単に操作できます。JsonReaderとJsonWriterを使用してJSONをすばやく読み書きするか、JsonSerializerを使用して単一のメソッド呼び出しで.NETオブジェクトをシリアル化します。

.netmvcプロジェクト内で正常に使用しました。

于 2010-03-29T19:09:40.257 に答える
2

ile、

あなたは本当にjson.netlibを見る必要があります、私は最近json / jqueryとmvcで同様のジレンマにあり、私自身の手巻きバージョンを試しましたが、私自身の実装で多くの制限にぶつかりました。newton json libは非常に簡単で、使いやすく、常に更新されます。現在のバージョンはネストされた構造で素晴らしく機能するため、その特定のjsonフォーマットの問題は問題になりません。

見てみると、理解するのに15分かかります。

于 2010-03-30T09:17:10.517 に答える
1

配列として返してみてください。また、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"}]
于 2010-03-29T22:43:31.093 に答える