2010-10-15 8 views
10

Vorrei modificare gli attributi html del codice visualizzato dal mio Html.ValidationMessageFor, ma voglio che il messaggio visualizzato sia "predefinito".MVC2 Html.ValidationMessageFor: aggiungere htmlAttributes ma mantenere il messaggio predefinito

Le opzioni di sovraccarico sono:
A) Html.ValidationMessageFor(expression)
B) Html.ValidationMessageFor(expression, validationMessage)
C) Html.ValidationMessageFor(expression, validationMessage, htmlAttributesObject)

Vorrei che ci fosse una scelta Html.ValidationMessageFor(expression, htmlAttributesObject), ma non c'è.

Come posso ottenere il risultato desiderato con l'opzione C? Cioè, dove sono memorizzati i messaggi "predefiniti"? C'è un modo semplice e pulito per farlo, quindi posso collegarlo al parametro validationMessage?

Grazie

risposta

19

Dal momento che non si vuole ignorare il messaggio predefinito, è sufficiente fornire una stringa vuota e MVC useranno il messaggio predefinito:

<%: Html.ValidationMessageFor(m => m.propertyName, string.Empty, new { attribs ... }) %> 
+0

Perfetto. Grazie. Suppongo di aver pensato che passare una stringa vuota avrebbe reso (o meno, per così dire) una stringa vuota per il messaggio. Il fatto che le stringhe vuote come parametri non sovrascrivano un helper ha un qualche tipo di ASP.NET o convenzione .NET più generale? O è quella variabile di comportamento caso per caso? –

+0

Né davvero. Ho scoperto questa funzionalità osservando il codice sorgente, vale la pena dare un'occhiata quando ne hai la possibilità. È stato fatto in questo modo perché non poteva esistere un metodo separato semplicemente prendendo i due parametri che si desiderava utilizzare originariamente, senza che la firma del metodo si scontrasse con (espressione, validationMessage). – Clicktricity

+0

come faccio a passare in HTMLAttribute (3 ° param) per dirgli di mostrare questa validazione su una nuova riga o sotto il campo che sta validando? – VoodooChild

Problemi correlati