0

mvcアプリからクライアント側に検証エラーのリストを返したいのですが、オブジェクトを受け取るjquery検証showErrorを利用できます

フィールドのリストと、それらに適用されるエラーを、最適な方法で取得できます。

私はすでにいくつかの形式を試しましたが、辞書は検証ライブラリで必要とされる正しい構造にシリアル化されていません。

すなわち。

{"fieldname":"some error for fieldname", "fieldname2": "some error for fieldname2"}

私の例はすべて、次のようなものにシリアル化されているようです。

{"Key": "fieldname", "Value" : "some error for fieldname"}

データを返すための最良の方法は何ですか?また、必要な正しい方法でデータをシリアル化するにはどうすればよいですか?

4

1 に答える 1

1

Json.NET(ASP.NET MVC 4のデフォルトのJSONシリアライザーでもあります)とそのJsonWriter:を使用することをお勧めします。

StringWriter errorsStringWriter = new StringWriter();
JsonWriter errorsJsonWriter = new JsonWriter(jsonStringWriter);
errorsJsonWriter.WriteStartObject();
errorsJsonWriter.WritePropertyName("fieldname"); 
errorsJsonWriter.WriteValue("some error for fieldname");
errorsJsonWriter.WritePropertyName("fieldname2"); 
errorsJsonWriter.WriteValue("some error for fieldname2");
...
errorsJsonWriter.WriteEndObject();
errorsJsonWriter.Flush();

この方法で生成されたJSONを次のように返すことができますContentResult

return Content(errorsStringWriter.GetStringBuilder().ToString(), "application/json");

アップデート

Json.NETは、を介して動的JSONもサポートしますJObject。その場合、コードは次のようになります。

var jsonObject = new JObject();
jsonObject.Add("fieldname", "some error for fieldname");
jsonObject.Add("fieldname2", "some error for fieldname2");
...

この場合の作成ContentResultは次のようになります。

    return Content(jsonObject.ToString(Newtonsoft.Json.Formatting.None), "application/json");
于 2012-11-22T12:27:18.673 に答える