Richiesto Attributo per tipo di valore bool quando viene utilizzato come casella di controllo

StackOverflow https://stackoverflow.com/questions/2208444

  •  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

È stato utile?

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>
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top