2017-10-06 6 views
4

J'essaie de définir dynamiquement mon groupe ValidationGroup de validateurs de champs requis à partir d'une propriété sur ma page, mais ils ne sont pas déclenchés. Si je mets la chaîne manuellement, elle se déclenche. Mon hypothèse est que ce n'est pas en tirant la propriété correctement dans le ValidationGroup. Est-ce que je manque quelque chose?La définition de ValidationGroup sur RequiredFieldValidator à partir d'une propriété ne s'effectue pas correctement

<asp:RequiredFieldValidator runat="server" ID="rfvHouseName" ControlToValidate="txtHouseName" ErrorMessage="Please enter a house name/no." ForeColor="Red" ValidationGroup="<%#ValidationGroup%>"><i class="fa fa-star requiredFieldStar"></i></asp:RequiredFieldValidator> 
<asp:TextBox ID="txtHouseName" runat="server" MaxLength="50" CssClass="form-control" /> 

private static string _validationGroup = "NewAddress"; 

public virtual string ValidationGroup 
{ 
    get { return _validationGroup; } 
    set { _validationGroup = value; }   
} 
+0

Les propriétés du _ValidationGroup et du getter et du setter dans la classe du code sont-elles derrière? –

+0

Oui. Je peux y entrer. Si je mets un <% = ValidationGroup%> sur la page, il affiche la chaîne attendue. –

+0

est-ce que des espaces aideraient comme ceci? <% # ValidationGroup%> ' –

Répondre

2

Vous devez définir dans le code derrière

rfvHouseName.ValidationGroup = ValidationGroup; 

Ou si vous voulez vraiment l'utiliser en ligne, vous devez l'utiliser comme ceci

<asp:RequiredFieldValidator ValidationGroup='<%# ValidationGroup %>' 

Toutefois, pour la deuxième un pour travailler, vous devez appeler DataBind() du code derrière chaque fois.

protected void Page_Load(object sender, EventArgs e) 
{ 
    DataBind(); 
} 
+0

Juste par curiosité qu'est-ce que DataBind() lie dans ce cas? –

+0

Sans cela, la valeur de ValidationGroup ne sera pas liée au validateur. Cette étape est toujours nécessaire lors de la liaison de données à des contrôles qui ne se trouvent pas dans un répéteur, GridView, etc. – VDWWD

+0

Ajout du DataBind() travaillé. Comme l'a dit EmptyWaterHoles, voudriez-vous expliquer ce qu'il fait et pourquoi cela le fait fonctionner. Merci. –