2013-03-21 2 views
2

Мой контроллер возвращает JsonResult так:как изменить результат JSON перед отправкой обратно клиенту

return Json(model); 

Как я могу изменить данные JSon на лету перед отправкой обратно клиенту. Я хотел бы добавить атрибуты проверки моей модели, так что я в конечном итоге что-то вроде:

{"Label": "Test", 
    "ValidationRules":[{"data-val-required":"This field is required.", "data-val-length-max":25, "data-val-length":"Max 25 chars." }]} 

UPDATE

public class Product 
{ 
    [Required] 
    String Label {get; set;} 
} 

при вызове JSon (модель) с моделью является экземпляром продукта, Я хотел бы изменить строку json перед ее возвратом, чтобы он включал атрибуты проверки.

+0

Вы должны показать нам, что вы делаете с этим JSON – mattytommo

+0

см. Мое обновление для получения более подробной информации. – Sam

+0

Почему бы не изменить его перед преобразованием в json? –

ответ

1

Почему бы не создать базовый класс под названием ValidatableBase, который имеет свойство ValidationRules:

public class Product : ValidatableBase 
{ 
    public string Label { get; set; } 
} 

public abstract class ValidatableBase 
{ 
    public ValidatableBase() 
    { 
     this.ValidationRules = new Dictionary<string, string>(); 
    } 
    public Dictionary<string, string> ValidationRules { get; set; } 
} 

public ActionResult GetProduct() 
{ 
    var product = new Product(); 
    product.Label = "foo"; 
    product.ValidationRules.Add("data-val-required", "this field is required"); 

    return Json(product); 
} 

Наследовать от этого класса и сериализации.

Или если вы используете DataAnnotations, почему бы не использовать методы проверки jQuery по умолчанию и методы HtmlHelper, предоставляемые ASP.NET MVC?

+0

спасибо за помощь. Я использую asp.net mvc, но в этом конкретном случае я не полагаюсь на модель для привязки представления. Я полагаюсь на модель нокаута, построенную из объекта json. Создание базового класса - неплохая идея. Однако у меня много полей, поэтому я придумаю решение о назначении правила проверки правильности для данного поля. – Sam

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