J'ai un contrôle personnalisé qui affiche un certain nombre de commandes literalcontrols dans la méthode createchildcontrols. comme ci-dessous (il y a d'autres lignes de literalcontrols étant ajouté que je ne l'ai pas uncluded ici)en utilisant findcontrol pour trouver un contrôle dans un contrôle littéral
this.Controls.Add(new LiteralControl(string.Format("<input type=\"text\" style=\"display:none\" value=\"{0}\" id=\"{1}\" name=\"{1}\" />", MediaId.ToString(), this.UniqueID)));
je suis alors en train de valider cette zone de texte via l'ajout de la [ValidationProperty (« myprop »)] au sommet de la classe . fondamentalement j'ai besoin de valider contre la valeur entrée dans la zone de texte. la propriété myprop est comme suit
public string myprop
{
get
{
Control ctrl = this.FindControl(this.UniqueID);
string txt = ((TextBox)ctrl).Text;
try
{
MediaId = Convert.ToInt32(txt);
}
catch { MediaId = 0; }
return txt;
}
}
malheureusement le FindControl ne trouve pas la zone de texte du tout, je suppose parce que pour .net concerne son un LiteralControl, et non une zone de texte du tout
maintenant sûr je pourrais changer les CreateChildControls pour ce faire
TextBox tb = new TextBox();
tb.Text = this.MediaId.ToString();
tb.ID = this.UniqueID;
this.Controls.Add(tb);
, mais à cause d'autres limites de ce que je fais, je dois changer beaucoup plus de choses dans d'autres endroits ..
est-il de toute façon d'obtenir findcontrol pour trouver la zone de texte rendue dans le littéral, ou une autre méthode?
grâce
nat
mais il n'y a aucun moyen de contrôler le clientid de cela mais est là? – nat
En ce qui concerne le framework webform, le contenu du contrôle littéral est traité comme du texte et non comme un contrôle. –