2010-03-13 16 views
7

il mio oggetto ha campo con tipo di dati int. quando metto in formato html in questa casella di testo non numero il validatore dice: il campo deve essere un numero. Come posso cambiare questi messaggi come questomodifica messaggio di conferma nell'annotazione dati

[Required(ErrorMessage = "Введите название")] 
    [DisplayName("Название")] 
    public int age { get; set; } 
+0

Qualsiasi motivo per cui questa domanda è stata downvoted? Si prega di lasciare un commento quando si scende a una domanda. IMHO è una buona domanda. –

+0

Non tutti comprendono il russo. il testo degli attributi dovrebbe essere in inglese. –

risposta

4

non ho trovato un ambiente pulito modo per raggiungere questo obiettivo utilizzando le annotazioni di dati. Un modo sarebbe quello di scrivere un raccoglitore di modelli personalizzato, ma questo sembra un lavoro molto da fare per un compito così semplice.

Un altro modo per ottenere ciò è aggiungere una cartella App_GlobalResources all'applicazione ASP.NET. Aggiungi un file di risorse chiamato Messages.resx contenente una risorsa stringa PropertyValueRequired.

PropertyValueRequired = "Some custom error message" 

Nella tua registrare la chiave Application_Start classe di risorse:

protected void Application_Start() 
{ 
    RegisterRoutes(RouteTable.Routes); 
    DefaultModelBinder.ResourceClassKey = "Messages"; 
} 

Nota che ASP.NET MVC 2 utilizza la chiave di risorsa PropertyValueInvalid invece di PropertyValueRequired.

L'IMO che utilizza le annotazioni di dati per eseguire la logica di convalida è limitato (forse in .NET 4 questo cambierà). Se si desidera avere il controllo completo sulla logica di convalida, raccomanderei l'uso di una libreria di convalida come Fluent Validation o xVal.

+0

Ho avuto esattamente lo stesso problema. Sono passato anche dalle annotazioni dei dati a Fluent Validation. Trovo che la Validation fluente sia davvero utile e facile da personalizzare. –

+0

Qualche motivo per cui consigliamo Fluentvalidation? È meglio del blocco di applicazioni di convalida della libreria aziendale? BTW, xVal è attualmente deprecato. –

+0

Raccomando FV perché è leggero, consente di esprimere regole di convalida complesse in modo elegante, fornisce un'API per testare facilmente le regole di convalida e ha una grande integrazione con ASP.NET MVC. –

2

Mi sono imbattuto nello stesso problema e ho lavorato intorno specificando un'espressione regolare che consente solo numeri positivi naturali.

[Required(ErrorMessage = "Введите название")] 
[DisplayName("Название")] 
[RegularExpression(@"^[0-9]+$", ErrorMessage = "Поле возраст не является числом")] 
public int age { get; set; } 

Non sono sicuro se ci sono dei downfalls a questa soluzione. Sembra funzionare bene per me.

PS: Se non si desidera consentire agli zeri iniziali utilizzare "^[1-9]+[0-9]*$".

In retrospettiva: Devo ammettere anche se è un po 'strano aggiungere un'espressione regolare a un numero intero.

Problemi correlati