Avatar billede naza Nybegynder
18. december 2004 - 18:54 Der er 5 kommentarer

Validering af to felter

Hej

Jeg har to felter i en form - Brugeren må/skal kun indtaste i en af dem - Derfor har jeg brug for at kunne lave en validering af om brugeren har indtastet i et af felterne.
Problemet er hvis brugeren ikke indtaster i nogen af felterne - hvordan sikre jeg mig at vedkommende gør det vha. validering.

Mvh. Jannik
Avatar billede thefatman Nybegynder
18. december 2004 - 19:45 #1
Her kan jeg kun henvise til html.dk's ASP.net guide, hvor de også gennemgår validering.

http://www.html.dk/tutorials/aspnet/lektion9.asp
Avatar billede snepnet Nybegynder
19. december 2004 - 03:50 #2
det kan ikke umiddelbart lade sig gøre med de eksisterende validators, da de alle (på nær requiredfieldvalidator) kun medfører eksekvering af valideringen såfremt der er et indhold i tekstboksen.

et workaround (simpelt, men ikke ret godt - og vil heller ikke sikre dig serverside) ville være at du satte værdien i de tekstbokse du vil sammeligne til det samme (f.eks.) et mellemrum, og benyttede en CompareValidator sådan her :

<body>
    <form id="Form1" method="post" runat="server">
        <asp:TextBox id="TextBox1" runat="server">&nbsp;</asp:TextBox>
        <asp:TextBox id="TextBox2" runat="server">&nbsp;</asp:TextBox><BR>
        <asp:CompareValidator id="cmpValidator" runat="server" ControlToCompare="TextBox1" ControlToValidate="TextBox2"
            ErrorMessage="Fejl"></asp:CompareValidator>
        <BR>
        <asp:Button id="Button1" runat="server" Text="Button"></asp:Button><BR>
    </form>
</body>

alternativt skal du lave det selv, og der har du så nogle forskellige muligheder fra specialisering af en af de eksisterende validators, til en ren hjemmestrikket løsning.

for eksemplets skyld kan du lave en meget hurtig specialisering af en comparevalidator som vil sikre dig serverside-valideringen sådan her (ikke afprøvet) :

public class NotEqualValidator : CompareValidator
{
    protected override bool EvaluateIsValid()
    {
        string var1 = GetControlValidationValue(this.ControlToValidate);
        string var2 = GetControlValidationValue(this.ControlToCompare);
        if(var1 == var2)
            return false;
        return true;
    }
}

jeg forstod dit spørgsmål som at du ville prøve at klare dig med de indbyggede kontroller, og den indbyggede valideringsmekanisme... du må lige sige til hvis jeg har misforstået dig.

mvh
Avatar billede naza Nybegynder
19. december 2004 - 14:43 #3
Hej snepnet

Ja du har ret i at de eksisterende ikke kan bruges i mit tilfælde, pga. hvis der ikke er indhold i feltet så vil brugeren kunne gå videre.

Mht. om jeg kun vil bruge de indbyggede kontroller så er det ikke et must for mig.

Hvis du har nogle input til hvordan jeg ellers kunne lave denne validering (helst på serversiden) så er jeg meget interesseret - Helst i VB som er det sprog jeg koder i :-)
Ved ikke om der er mulighed for det med CustomValidation - Kan man kode så den også validerer på feltet selvom der ikke står noget i det?

Mvh. Jannik
Avatar billede snepnet Nybegynder
09. januar 2005 - 03:06 #4
Hej Jannik - undskyld, men jeg har ikke set dit sidste indlæg.
Har du stadig problemer her ?
Mvh
Avatar billede snepnet Nybegynder
07. september 2005 - 18:20 #5
jannik ?
mvh
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester