6

Kontekst: tworzenie usługi jsonP przy użyciu metod kontrolera MVC, która zapewnia definicję pól formularzy, w tym wszystkie reguły sprawdzania poprawności.Jak serializować model z wszystkimi atrybutami sprawdzania poprawności z poszczególnych właściwości?

Mój problem polega na tym, że nie wiem, jak przekształcić atrybuty sprawdzania poprawności w postaci szeregowej. Preferuję atrybuty sprawdzania poprawności w tym samym formacie, w jakim są serializowane przez Brzytwę podczas stosowania dyskretnego sprawdzania poprawności w zwykłych widokach Mvc.

Do serializowania do jsona używam NewtonSoft.Json (4.0.2).

Przykład modelu publiczny profil klasy {

[Required(ErrorMessage="This field is required.")] 
    [StringLength(25, ErrorMessage="Max 25 chars.")] 
    public string Firstname{get;set;} 
    } 

Przykład preferowanego serializowane javascript:

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

Każda pomoc lub wskazówki są bardzo cenione.

Odpowiedz

7

To skonstruować słownika z atrybutów walidacji dla danej nieruchomości na podstawie adnotacji danych atrybuty:

var metadata = ModelMetadataProviders.Current.GetMetadataForProperty(null, typeof(MyModel), "MyProperty"); 
var validationRules = metadata.GetValidators(ControllerContext).SelectMany(v => v.GetClientValidationRules()); 
var validationAttributes = new Dictionary<string, string>(); 

foreach (ModelClientValidationRule rule in validationRules) 
{ 
    string key = "data-val-" + rule.ValidationType; 
    validationAttributes.Add(key, HttpUtility.HtmlEncode(rule.ErrorMessage ?? string.Empty)); 
    key = key + "-"; 
    foreach (KeyValuePair<string, object> pair in rule.ValidationParameters) 
    { 
     validationAttributes.Add(key + pair.Key, 
      HttpUtility.HtmlAttributeEncode(
       pair.Value != null ? Convert.ToString(pair.Value, CultureInfo.InvariantCulture) : string.Empty)); 
    } 
} 

Następnie należy szeregować słownika validationAttributes z nieruchomości w niestandardowym kodem JSON serializacji.

+0

Dzięki, to było dokładnie to, czego szukałem. – bees73

+0

jakakolwiek sugestia dla Web Api 2? – JenonD

Powiązane problemy