Voici mon scénario:Comment ajouter une classe CSS supplémentaire sur un DIV environnant pour la validation de formulaire en échec?
<!-- Normal Control -->
<div class="required">
<label for="address1">Address line 1</label>
<input type="text id="address1" name="address1" class="inputText" />
</div>
<!-- Same Control - but with a validation error -->
<div class="required error">
<p class="error">Address Line 1 Field is required</p>
<label for="address1">Address line 1</label>
<input type="text id="address1" name="address1" class="inputText" />
</div>
Dans la zone html « erreur de validation », je suis en mesure de montrer le message en utilisant le code comme ceci:
<div class="required">
<asp:RequiredFieldValidator id="address1_validate" runat="server" ControlToValidate="address1" Text='<p class="error">Address Line 1 Field is required</p>' />
<label for="address1">Address (line 1)</label>
<asp:TextBox id="address1" CssClass="inputText" CausesValidation="true" runat="server"/>
</div>
Ce que je ne suis pas en mesure de le faire est d'ajouter la classe supplémentaire à l'étiquette div environnante. Je pensais que je pouvais faire quelque chose comme:
<div class="required <%= !address1_validate.isValid ? "error" : "" %>">
Ce à peu près ne fonctionne pas.
De toute façon, je ne veux pas avoir à compter sur JavaScript pour définir ces valeurs - il doit fonctionner comme "Web 1.0".
Des idées?
Merci, Jon
------- ------- Ma solution est ici le code derrière qui a fonctionné pour moi:
protected void Page_Load(object sender, EventArgs e)
{
if (this.IsPostBack)
{
address1_validate.Validate();
if (!address1_validate.IsValid)
{
address_panel.CssClass = "required error";
}
}
}
Et le front-end :
<asp:Panel runat="server" id="address_panel" CssClass="required">
<asp:RequiredFieldValidator id="address1_validate" runat="server" ControlToValidate="address1" Text='<p class="error">Address Field is required</p>' />
<label for="address1">Address (line 1)</label>
<asp:TextBox id="address1" CssClass="inputText" CausesValidation="true" EnableViewState="true" runat="server" />
</asp:Panel>
Merci pour l'aide!
assurez-vous de définir EnableClientScript = « false » sur le RequiredFieldValidator, afin de vous assurer que le postback se produit. Sinon, il validera via JavaScript s'il le peut, et votre code côté serveur pour définir la classe CSS ne sera jamais exécuté. – bdukes