0

次のコードがあります。

return Json(new {
    entity = vm.Entity,
    errors = e.Message,
    field = vm.Field
});

次のように入力すると、コンパイルは問題なく実行されますが、ビューがデータを読み取ろうとすると失敗します。

return Json(new {
    wrongspellingofentity = vm.Entity,
    errors = e.Message,
    field = vm.Field
});

ある種のクラスを使用してデータを返す方法はありますか?もしそうなら、クライアントでこれを読み取るにはどうすればよいですか? そこにデータを受け入れるために使用できるjavascriptクラスのようなものはありますか?

4

3 に答える 3

0

カスタム ビューモデル (単なる POCO クラス) をクライアントに送信できます。

このようなクラスがあると仮定します

public class CustomerInfo
{
  public string Name { set;get;}
  public int Age { set;get;}
}

このように Action メソッドから返すことができます

public Actionresult GetCustomerInf()
{
 var cm=new CustomerInfo();
 cm.Name="Some Name";
 cm.Age=23;
 return Json(cm,JsonRequestBehaviour.AllowGet);
}

JSONこれは次のように返されます

{  "Name":"Some Name", "Age":"23" }

クライアント側の JavaScript からこれにアクセスするには、getJSONメソッドを使用できます。

$.getJSON("@Url.Action("GetCustomerInfo","YourController")",function(data){
  //now you can parse through the JSON result we received back
  alert(data.Name);
  alert(data.Age);
});

アクション メソッドから複合型を返す場合は、JSON 構造を取得し、結果を解析するコードを変更できます。

jsonlint.comは、 で作業しながら構造を検証するのに役立つ便利なサイトですJSON

于 2012-09-16T14:01:29.420 に答える
0

サーバー側でのプロパティの変更がクライアント側で認識されないことが懸念される場合は、C# クラスを使用しても実際には役に立ちません。JavaScript はクラスをネイティブにサポートしていないため、有効な JSON を渡す限り文句を言う理由はありません。

C# アセンブリから JavaScript 疑似クラスを生成し、JSON データをロードするときに、結果の JavaScript オブジェクトをそれらのクラスの 1 つに変換し、欠落しているプロパティまたは正しくないプロパティを無効にするメカニズムを使用できます。技術的には可能ですが、あなたの意図がわからないので、JSON データを生成および解釈するときに規律を守ることをお勧めするかどうかはわかりません。

于 2012-09-16T13:36:49.263 に答える
0

匿名型を使用することは、コンパイラが匿名型をクラスとして作成するため、クラスを使用することと同じです。

JSON に変換するクラスを指定するだけで、現在と同じように機能し、結果はそのままになります。

検討:

return Json(new MyType{
     entity = vm.Entity,
     errors = e.Message
});
于 2012-09-16T13:06:46.707 に答える