2012-11-22 3 views
0

Я хочу, чтобы вернуть список ошибок проверки моего MVC приложения на стороне клиента, чтобы я могу взять использовать jquery validation showError с который принимает объектJson список динамических строк

я могу получить список полей и erorr (s), которые применяются к ним любым способом, который лучше всего подходит.

Я пробовал несколько форматов уже, словарь и ни один из этих сериализаций в правильную структуру, как требуется библиотекой проверки.

ie.

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

Все мои примеры, кажется, сериализация в то вдоль линий

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

Каков наилучший способ вернуть свои данные и как я могу получить его по частям в правильном пути, что мне нужно ?

ответ

1

Я предлагаю вам использовать Json.NET (это по умолчанию JSON сериализатор для ASP.NET MVC 4, а) и его 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"); 

UPDATE

Json.NET также поддерживает дина IC 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"); 
+0

это выглядит очень перспективным будет попробовать его –

+0

СММ с помощью объекта JSON просто return [[]] –

+0

@ DanielPowell Вы имеете в виду подход 'return Json (jsonObject);'? – tpeczek

Смежные вопросы