2010-09-03 8 views
5

Vorrei utilizzare le annotazioni di dati per gestire la convalida nella mia app Silverlight. Gli attributi di convalida incorporati (principalmente StringLength e Required) sono eccezionali e rendono la vita molto facile. Tuttavia, sembrano avere un difetto critico. Se la mia locale è impostata su fr-CA, ad esempio, le eccezioni di convalida sono ancora in inglese: "Il campo Nome è obbligatorio", "Il campo Nome deve essere una stringa con una lunghezza massima di 20", ecc.Silverlight 4: localizzazione delle eccezioni di convalida di annotazioni dati integrate

Questo è un principale problema. Significa che se voglio i messaggi di errore localizzati per gli attributi di convalida incorporati, devo aggiungere manualmente ErrorMessage/ErrorMessageResourceType a ogni attributo di convalida su ogni proprietà validatable nel mio livello aziendale e aggiungere manualmente le stringhe tradotte per ogni messaggio di errore.

Quindi ... mi manca qualcosa qui? C'è un modo per avere automaticamente gli attributi di convalida incorporati localizzati? O qualche altro modo più semplice per farlo? O sono solo completamente sfortunato e bloccato con la rotta manuale?

Eventuali commenti o pensieri sarebbero apprezzati.

risposta

6

Ok, ho aggirato questo semplicemente sottoclasse gli attributi di convalida incorporati. Problema risolto!

internal class LocalizedStringLengthAttribute : StringLengthAttribute 
{ 
    public LocalizedStringLengthAttribute(int maximumLength) 
     : base(maximumLength) 
    { 

    } 

    public override string FormatErrorMessage(string name) 
    { 
     return String.Format(CultureInfo.CurrentUICulture, LanguageResources.Resource.Error_StringLength, name, MaximumLength); 
    } 
} 
+0

Ho combinato la soluzione con la possibilità di modificare il codice generato da WCF RIA (http://www.scip.be/index.php?Page=ArticlesNET36). Ora posso sostituire l'attributo [Richiesto] generato con la mia implementazione. Grazie per aver condiviso questo! – Nasser

Problemi correlati