Итак, я уже несколько дней работаю над этим проектом и не смог решить проблему получения поддержки intellisense для своих пользовательских внутренних свойств для пользовательского элемента управления (ascx, заметьте).Отсутствует Intellisense при описании свойств пользовательского контроля Declaratively
Я видел решение этого (используя серверные элементы управления, .cs mind you) много раз. Хорошо сказано в этом article. Все работает для меня при использовании элементов управления ascx, кроме intellisense.
Вот набросок моего кода:
[PersistChildren(true)]
[ParseChildren(typeof(BreadCrumbItem))]
[ControlBuilder(typeof(BreadCrumbItem))]
public partial class styledcontrols_buttons_BreadCrumb : System.Web.UI.UserControl
{
...
[PersistenceMode(PersistenceMode.InnerDefaultProperty)]
public List<BreadCrumbItem> BreadCrumbItems
{
get { return _breadCrumbItems; }
set { _breadCrumbItems = value; }
}
...
protected override void AddParsedSubObject(object obj)
{
base.AddParsedSubObject(obj);
if (obj is BreadCrumbItem)
BreadCrumbItems.Add(obj as BreadCrumbItem);
}
...
public class BreadCrumbItem : ControlBuilder
{
public string Text { get; set; }
public string NavigateURL { get; set; }
public override Type GetChildControlType(string tagName, System.Collections.IDictionary attribs)
{
if (String.Compare(tagName, "BreadCrumbItem", true) == 0)
{
return typeof(BreadCrumbItem);
}
return null;
}
}
}
Вот моя наценка (который работает отлично, просто нет IntelliSense на декларациях дочерних объектов):
<%@ Register src="../styledcontrols/buttons/BreadCrumb.ascx" tagname="BreadCrumb" tagprefix="uc1" %>
...
<uc1:BreadCrumb ID="BreadCrumb1" runat="server" BreadCrumbTitleText="Current Page">
<BreadCrumbItem Text="Home Page" NavigateURL="~/test/breadcrumbtest.aspx?iwentsomewhere=1" />
<BreadCrumbItem Text="Secondary Page" NavigateURL="~/test/breadcrumbtest.aspx?iwentsomewhere=1" />
</uc1:BreadCrumb>
Я думаю, что проблема лежит как движок intellisense проходит вспомогательные классы. Все рабочие примеры, которые я вижу по этому поводу, - это не ascx, а элементы управления веб-сервера (cs, в сборной сборке).
Если кто-то может пролить свет на то, как это сделать с помощью элементов управления ascx, я был бы признателен.
К сожалению, это не сработало для внутренних свойств элемента управления. Просто разъяснение, я получаю intellisense в встроенных свойствах, таких как «BreadCrumbTitleText», но не получая intellisense во внутренних свойствах, таких как «BreadCrumbItem». –