Sto utilizzando gli attributi DataAnnotations con ASP.Net MVC 2 per fornire la convalida del modello per i miei ViewModels:Fornire messaggi di errore localizzati per la convalida del modello non attribuita in ASP.Net MVC 2?
public class ExamplePersonViewModel {
[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
[StringLength(128, ErrorMessageResourceName = "StringLength", ErrorMessageResourceType = typeof(Resources.Validation))]
[DataType(DataType.Text)]
public string Name { get; set; }
[Required(ErrorMessageResourceName = "Required", ErrorMessageResourceType = typeof(Resources.Validation))]
[DataType(DataType.Text)]
public int Age { get; set; }
}
Questo sembra funzionare come previsto (anche se è molto verboso). Il problema che ho è che ci sono convalide del modello dietro le quinte in corso che non sono legate ad alcun attributo specifico. Un esempio di questo nel modello precedente è che la proprietà Age
deve essere un int
. Se si tenta di immettere un valore non intero sul modulo, verrà visualizzato un errore con il seguente messaggio (non localizzato):
Il campo Età deve essere un numero.
Come possono questi messaggi di convalida non attributo essere localizzati?
Esiste un elenco completo di questi messaggi disponibili in modo che possa essere sicuro che siano tutti localizzati?
Ulteriori informazioni Ho trovato anche: http://stackoverflow.com/questions/1538873/how-to-replace-the-default-modelstate-error-message-in-asp-net-mvc-2/ –
It è importante notare che, facendo ciò, si avrà solo un messaggio di errore localizzato durante la convalida su SERVER-SIDE. Per avere il tuo messaggio localizzato sul lato client dovrai anche copiare e incollare 'ClientDataTypeModelValidatorProvider' dal sorgente MVC e riscrivere il suo metodo' MakeErrorString'. Maggiori informazioni [qui] (http://jwwishart.blogspot.com/2011/03/custom-server-and-client-side-required.html), scorrere fino a enda. Mi ci è voluto un sacco di tempo per capire che lato client e lato server usano entrambi mezzi diversi per ottenere quel messaggio. Spero che questo aiuti qualcuno a risparmiare tempo. –
Si dice che il secondo messaggio non verrà mai visualizzato se si dispone di DataAnnotationsModelValidatorProvider nell'elenco dei provider di convalida. Come posso superare questo problema? – Andrew