Вы можете добавить следующее свойство CSS для решения этой проблемы:
.btn-group button{
width:130px !important;
}
Вы устанавливаете HRef на методе OnInit Страницы? Раз так попытайтесь выгнать присвоение с квартиры на Page_Load.
Средства управления Init от наиболее удаленного до внутреннего большинство. Это означает, присваиваете ли Вы действительно значение на OnInit Страницы, средства управления еще не инициализировали.
Вот достойный документ о жизненном цикле страницы: http://www.codeproject.com/KB/aspnet/lifecycle.aspx
Дерево управления строится после Init (); фактически, Init () - это место для добавления элементов управления в дерево до десериализации состояния просмотра. Вы не можете получить доступ к linkHref до того, как дерево управления будет построено.
Одно из возможных решений - сохранить URL до тех пор, пока вы не сможете его использовать. Внутри внутреннего элемента управления измените свойство Url на простую строку:
public string Url { get; set; }
В обработчике событий Load или PreRender внутреннего элемента управления распространите строку на (теперь инициализированный) объект linkHref:
linkHref.HRef = value;
Вы сказали:
// Объявлен частный элемент управления linkHref // в разметке .ascx элемента управления
Изменится ли что-нибудь, если вы сделаете этот элемент защищенным?
Некоторое время назад я опубликовал алгоритм поиска пути на C #
Вы можете попробовать использовать его в качестве отправной точки, т.е. вы можете изменить функцию, которая проверяет в следующую ячейку, чтобы проверить, допустимо ли проверять препятствия, и вы можете кормить ее небольшими интервалами вместо начальной и конечной точек, вроде как несколько маршрутов мини-поиска.
(Текст на испанском языке, но вы можете скачать приложение по ссылке вверху)
Что мне кажется странным в вашем коде, так это такая строка:
public InnerControl Inner
{
//...
set{ _Inner = value; }
}
В чем смысл создания установщика для внутреннего элемента управления? Я не могу этого понять. Предполагается, что экземпляр внутреннего элемента управления создается из разметки внешнего элемента управления, и именно этим созданным экземпляром следует управлять привязкой html. Если я добавлю эти строки к свойству Inner в Outer.ascx.cs
set
{
this._Inner = (ASP.inner_ascx)value;
}
, я получу исключение нулевой ссылки, как и в исходном случае. Я думаю, что установщик инструктирует конструктор страниц ASP.Net создать еще один экземпляр внутреннего элемента управления и установить его с помощью свойства Inner. Я не уверен, но если у вас есть время, вы можете точно узнать, как это происходит, изучив файлы CS, созданные построителем страниц, они находятся во временных файлах ASP.Net.