Это потому, что литерал находится внутри повторителя. Возможно, несколько его экземпляров создаются с использованием предоставленного вами шаблона, поэтому простое обращение к нему по имени не сработает.
Используйте что-то вроде:
Literal ltlText = (Literal)rptHelp.Items[0].FindControl("ltlText");
// Do stuff with literal
Извините, пока не достаточно, чтобы преобразовать в синтаксис VB, но, надеюсь, вы поняли идею.
Вместо того, чтобы обращаться к таким элементам, вы, вероятно, захотите выполнить свой код, пока повторитель выполняет свою работу, например в обработчике события OnItemDataBound вашего элемента управления.
Еще немного кода C # примера обработчика событий:
protected void rptHelp_OnItemDataBound(object sender, RepeaterItemEventArgs e)
{
if (e.Item.ItemType == ListItemType.AlternatingItem || e.Item.ItemType == ListItemType.Item)
{
// In this example, the repeater's data source is a DataTable,
// so each item corresponds to a DataRow
DataRow row = e.Item.DataItem as DataRow;
Literal ltlText = (Literal)e.Item.FindControl("ltlText");
// Set literal based on data here
}
}