Hej, försöker begripa mig på hur man använder sig av olika Validators. Lyckades lösa det med en CustomValidator ändå. Tog bort ControlToValidate. WTF??? Du behöver ingen customvalidator.Visa olika felmeddelanden på samma plats?
Har den här kodsnutten:
<asp:TextBox ID="phone" runat="server" />
<asp:RequiredFieldValidator
ID="RequiredFieldValidator4"
ErrorMessage="Du måste ange ett telefonnummer"
ControlToValidate="phone"
runat="server"
Display="static" />
<asp:RegularExpressionValidator
ID="RegexpValidator"
ControlToValidate="phone"
runat="server"
ValidationExpression="[0-9]{5,}"
ErrorMessage="Telefonnumret är antingen för kort eller innehåller felaktiga tecken" />
Valideringen funkar som det är tänkt. Problemet är bara att jag vill att dom olika felmeddelandena ska visas på samma plats beroende på vilket som är aktuellt. Resultatet just nu blir ungefär:
Textbox felmeddelande1 felmeddelande2
Jag vill alltså visa felmeddelandet där felmeddelande1 hamnar oavsett om det är meddelande 1 eller 2 som är aktuellt.
Har försökt mig på diverse varianter med en CustomValidator där jag sätter texten i min code behind men lyckade inte få till en validering liknande requiredFieldValidator i min hemmasnickrade kod.
(Kodar C#) Tips mottages tacksamt!
Sv: Visa olika felmeddelanden på samma plats?
Sv:Visa olika felmeddelanden på samma plats?
Det funkar inte som jag tror att det ska funka. Kan någon reda ut begreppen så vore jag lycklig.
Jag försöker alltså göra en customvalidator som ska visa olika felmeddelanden beroende på vilket fel som uppstår. Har kollat via debuggern att valideringen i checkPhone() sker vid klick på submit-knappen men även om något är fel så går det vidare till checkOutOrder som ligger på knappen.
<tr>
<td class="title">
Telefon:
</td>
<td>
<asp:TextBox ID="phone" runat="server" />
<asp:CustomValidator ID="phoneValidator" ControlToValidate="phone" ValidateEmptyText="true"
OnServerValidate="checkPhone" runat="server" Display="static" />
</td>
</tr>
</table>
<p>
<asp:Button ID="button1" OnClick="checkOutOrder" Text="bekräfta" runat="server"/>
public void checkPhone(object source, ServerValidateEventArgs se)
{
se.IsValid = false;
// Check if field is empty
if (phone.Text.Length == 0)
{
phoneValidator.ErrorMessage = "Du måste ange telefonnummer";
}
// Check if field has more than 5 characters
else if (phone.Text.Length < 5 )
{
phoneValidator.ErrorMessage = "Telefonnumret är för kort";
}
// Check if field value is numeric
else if (!Regex.IsMatch(phone.Text, "^[0-9]{5,}$"))
{
phoneValidator.ErrorMessage = "Telefonnumret får endast bestå av siffror";
}
// If field matches allowed requirements set validation true
else if (Regex.IsMatch(phone.Text, "^[0-9]{5,}$"))
{
se.IsValid = true;
}
}
Sv: Visa olika felmeddelanden på samma plats?
Du kan lösa det genom att slänga in en ValidationSummary Control och sätta Display="none" på dina andra validatorer.
Har glömt om du behöver sätta validationGroup på alla Validatorer samt summaryn till samma, men det kan du ju testa dig fram till :)