У меня есть пользовательский элемент управления, который отображает ряд буквальных элементов управления в методе createchildcontrols. как показано ниже (добавляются другие строки буквального управления, которые я здесь не исключил)
this.Controls.Add(new LiteralControl(string.Format("<input type=\"text\" style=\"display:none\" value=\"{0}\" id=\"{1}\" name=\"{1}\" />", MediaId.ToString(), this.UniqueID)));
Затем я пытаюсь проверить это текстовое поле, добавив [ValidationProperty ("myprop")] вверху класса.
в основном мне нужно проверить по значению, введенному в текстовом поле. свойство myprop выглядит следующим образом
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;
}
}
к сожалению, findcontrol вообще не находит текстовое поле, я полагаю, потому что для .net это буквальный контроль, а не текстовое поле вообще
теперь я точно могу изменить createchildcontrols, чтобы сделать это
TextBox tb = new TextBox();
tb.Text = this.MediaId.ToString();
tb.ID = this.UniqueID;
this.Controls.Add(tb);
но из-за других ограничений того, что я делаю, мне пришлось бы изменить гораздо больше вещей в других местах ..
Есть ли способ заставить findcontrol найти текстовое поле, отображаемое внутри литерала, или другой метод?
спасибо
физ