Domanda

Ho riscontrato un problema nel tentativo di modificare un modulo che io stesso non ho creato.

Il modulo ha un campo di input asp: per un valore di data, che è controllato da un Campo obbligatorio e un intervalloVal. RangeVal ha impostato il tipo su "data" e valore minimo 2000-01-01: valore massimo 3000-01-01

Ora al problema, sto provando ad aggiungere in modo che anche l'utente possa inserire la data sotto forma di "20000101" in altre parole senza il " - " ;.

Ho provato ad aggiungere un altro rangeVal con tipo integer e i valori min, max e inserirli entrambi nello stesso gruppo di validazione, ma non ha funzionato.

Come posso consentire all'utente di utilizzare entrambi (uno dei due) formati nel campo di inserimento della data.

Grazie in anticipo!

È stato utile?

Soluzione

È possibile utilizzare un validatore di espressioni regolari al posto del validatore di intervallo. Sono un po 'arrugginito con Regex, ma sono sicuro che puoi trovare qualcosa qui.

http://www.regular-expressions.info/

Ecco un link alla pagina delle date:

http://www.regular-expressions.info/dates.html

prova questo, penso che funzionerà. In caso contrario, fammi sapere e lavorerò per correggerlo:

((19|20)\d\d[- /.](0[1-9]|1[012])[-/.](0[1-9]|[12][0-9]|3[01])|((19|20)\d\d(0[1-9]|1[012])(0[1-9]|[12][0-9]|3[01])))

Un altro post ha sollevato un punto in cui questo regex non convaliderà alcune date non valide come il feb 31. In questo caso, creerei semplicemente una classe di convalida che eredita dal validatore regex e sovrascriverei il metodo EvaluateIsValid e verificare se è una data effettiva. Ciò consente la maggior parte della convalida effettuata sul lato client, con il backup a livello di server che dovrebbe comunque eseguire una convalida secondaria.

Altri suggerimenti

Quando si utilizzano più controlli di convalida per convalidare un singolo controllo, devono passare tutti i controlli di convalida.

Potresti usare un'espressione regolare (come sottolinea Kevin) ma fare la validazione richiesta (controllando che il valore sia un oggetto DateTime valido e all'interno dell'intervallo specificato) sarà difficile da fare in modo pulito .

Suggerirei di scrivere il tuo Controllo CustomValidator , quindi utilizzalo per convalidare i tuoi valori come desideri.

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