Hallo,
ich habe ein Problem bei einem CustomControl unter ASP.
Bei der Benutzung des Controls bekomme ich immer Warnungen:
Zitat:
Validierung (XHTML 1.1): Der Name enthält Großbuchstaben. Dies ist nicht zulässig.
Validierung (XHTML 1.1): Das menuitem-Element wird nicht unterstützt.
Wie kann ich das verhindern? Andere Controls können das doch auch.
Ach ja, wo ich gerade dabei bin: Wie schaffe ich es, dass beim NavigateUrl-Attribut der Editor erscheint?
Einbindung in die Seite:
XML-Code:
<ibn:Menu ID="TestMenu" CssClass="testmenu" runat="server">
<MenuItem Name="Home" NavigateUrl="~/Default.aspx"></MenuItem>
<MenuItem Name="Work" NavigateUrl="~/abc.aspx"></MenuItem>
</ibn:Menu>
Quellcode des Controls:
Code:
public class MenuItem
{
public string Name
{ get; set; }
[UrlProperty]
[Category("Navigation")]
[Editor("System.Web.UI.Design.UrlEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
public string NavigateUrl
{ get; set; }
}
public class MyControlBuilder : ControlBuilder
{
public override Type GetChildControlType(String tagName, IDictionary attributes)
{
if (String.Compare(tagName, "MenuItem", true) == 0)
{
return typeof(MenuItem);
}
return null;
}
}
[ToolboxData("<{0}:Menu runat=server></{0}:Menu>")]
[ParseChildren(false)]
[ControlBuilderAttribute(typeof(MyControlBuilder))]
public class Menu : WebControl
{
List<MenuItem> _Items = new List<MenuItem>();
public List<MenuItem> Items
{
get { return _Items; }
}
protected override void AddParsedSubObject(object obj)
{
if (obj is MenuItem)
_Items.Add((MenuItem)obj);
else
base.AddParsedSubObject(obj);
}
}
Gruß
xaromz