2016-12-28 6 views
0

この都市のjsonデータを保持するmvcモデルに新しいプロパティを導入する方法を教えてください。mvcモデルでjsonとしてデータを公開するデータ型

public ActionResult Edit(int id) 
{ 
    MyModel model = repository.GetById(id); 
    if (model.CountryId.HasValue) 
    { 
     // load cities into new property 
    }  
    return this.View(result); 
} 

さらなるjs操作のためにクライアント側でjsonとして公開したい場合は、どのデータ型を自分のプロパティ(Cities)にする必要がありますか? ICollection?これには何か推奨はありますか?

+0

Jsonデータは 'return view()'で送信することはできません。データをモデルプロパティにバインドすることができ、ビューでは '@ Html.Raw(Json.Encode(Model.MyProperty))'として取得できます。 – mmushtaq

答えて

1

はあなたが好きな任意のオブジェクトタイプとして、それらを設定します。

MyModel model = repository.GetById(id); 
if (model.CountryId.HasValue) 
{ 
    model.Cities = repository.GetCities(model.CountryId.Value); 
}  
return this.View(model); 

を次に、クライアント上で、あなたはそれをシリアル化するためにJson.NETライブラリを使用することができます。クライアント側のJSコンポーネントに配列を渡そうとしているときに、このトリックを使用します。本質的に、それはクライアント側の配列にオブジェクトの配列をシリアル化:オブジェクトの種類は各都市を表すどんな

@(Html.Raw(Newtonsoft.Json.JsonConvert.SerializeObject(Model.Cities)) 

がクライアントに出てレンダリングされるかを決定するものです。単にオブジェクトを読み取り、すべて同じプロパティを持つ同等のJSオブジェクトをレンダリングします。

Model.Cities.Select(i => new { i.ID, i.Name, .. }) 

これにはサブセットのみが含まれています。私が信じる特定の列を除外するために使用できる属性もあります。

+0

私はクライアント側で都市を変換する限り、サーバー側にデータ型としてIEnumerableまたはICollectionを使用できますか? – user1765862

+0

まあ、IEnumerable またはICollection ここで、Tはシリアル化できる方法で定義する必要があります。それ以外の場合は、私が言及した匿名オブジェクトテクニックを使用してください。シリアライズする方法はシリアライズされています.Json.NETを使用します。 –

関連する問題