Richiesto Attributo per tipo di valore bool quando viene utilizzato come casella di controllo
-
18-09-2019 - |
Domanda
Io corro in un problema in cui ho un semplice add / modulo di modifica e l'utilizzo di convalida lato client (jQuery / MicrosoftMvcJQueryValidation.js) che è generata da annotazioni di dati e abilitato lato client chiamando il seguente, a mio avviso:
<% Html.EnableClientValidation(); %>
Questo sembra funzionare bene per la maggior parte degli elementi, però ho un caso in cui ho una proprietà booleana che viene reso come una casella di controllo utilizzando:
<%= Html.EditorFor(model => model.Chargeable)%>
che può essere sia vero / falso (barrata / spuntata).
Poiché il bool è un tipo di valore, e non annullabile, esso viene reso come una proprietà richiesta e visualizza un errore (lato client) quando il modulo viene inviato lettura "Il campo a pagamento è obbligatorio.", Tuttavia, come il HTML generato è in due parti (sia casella di controllo e valore nascosto) passerà secondo palo convalida.
Dopo la navigazione il codice sorgente MVC 2, sono riuscito a mettere un "veloce e sporco" fissare in per il momento, che è quello di impostare:
DataAnnotationsModelValidatorProvider.AddImplicitRequiredAttributeForValueTypes = false;
Qualsiasi altro ha qualche idea o suggerimento su come posso ottenere intorno a questo?
IMO, non penso MVC dovrebbe essere l'impostazione del validatore lato client necessario per caselle di controllo resi utilizzando i metodi Html.EditorFor / Html.CheckBox (Per).
. Nota: sto usando il 2 RC2 ASP.NET MVC e le MicrosoftMvcJQueryValidation.js dalla corrispondenza rilascio MVC Futures
Soluzione
Credo che il modo più semplice di gestire è quello di chiamare le regole ( "rimozione", [norme]) Funzione sugli elementi (principalmente caselle di controllo) che voglio togliere la convalida lato client da:
<script type="text/javascript">
$(document).ready(function() {
$('#Chargeable').rules('remove', 'required');
});
</script>