Domanda

il mio oggetto ha un campo con tipo di dati int.quando inserisco il modulo html in questa casella di testo la lettera non è un numero, il validatore dice: Il campo deve essere un numero.come posso cambiare questo messaggio in questo modo

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

Soluzione

Non ho trovato un pulito modo per raggiungere questo obiettivo utilizzando le annotazioni dei dati.Un modo potrebbe essere quello di scrivere un raccoglitore di modelli personalizzato, ma sembra che ci sia molto lavoro da fare per un compito così semplice.

Un altro modo per raggiungere questo obiettivo è aggiungere un file App_GlobalResources cartella nell'applicazione ASP.NET.Aggiungi un file di risorse chiamato Messages.resx contenente a PropertyValueRequired risorsa stringa.

PropertyValueRequired = "Some custom error message"

Nel tuo Application_Start registrare la chiave della classe di risorsa:

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

Tieni presente che ASP.NET MVC 2 utilizza il file PropertyValueInvalid invece di PropertyValueRequired chiave della risorsa.

L'IMO che utilizza le annotazioni dei dati per eseguire la logica di convalida è limitato (forse in .NET 4 questo cambierà).Se vuoi avere il pieno controllo sulla logica di convalida, ti consiglio di utilizzare una libreria di convalida come Convalida fluente O xVal.

Altri suggerimenti

Ho incontrato lo stesso problema e ha lavorato intorno ad esso specificando un'espressione regolare che consente solo numeri naturali positivi.

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

Non so se ci sono cadute a questa soluzione. Sembra funzionare bene per me.

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

In retrospettiva: devo ammettere anche se è un po 'strano per aggiungere un'espressione regolare per un intero

.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top