我正在尝试创建一个自定义上下文菜单作为用户控件。此用户控件的代码如下所示:
public partial class UCContextMenu : UserControl
{
private List<ContextMenuItem> m_menuItems = new List<ContextMenuItem>();
protected void Page_Load(object sender, EventArgs e)
{
}
[PersistenceMode(PersistenceMode.InnerProperty)]
public List<ContextMenuItem> Items
{
get { return m_menuItems; }
set { m_menuItems = value; }
}
public event EventHandler Command;
}
然后,我在与用户控件相同的命名空间ContextMenuItem
中定义了类型(实际上在同一个文件中),它本质上是一个菜单项:
public class ContextMenuItem
{
public string Name { get; set; }
public string Text { get; set; }
}
用户控件的ascx
页面包含一个repeater
定义如下的控件:
<div id="contentHolder">
<ul id="ulContextMenu" style="display: none; z-index: 1000; border-width: 0.8px;
font-size: 13px;" class="ui-corner-all">
<asp:Repeater runat="server" DataSource="<%# Items %>">
<ItemTemplate>
<li><a href='#<%# DataBinder.Eval(Container.DataItem, "Name") %>'>
<%# DataBinder.Eval(Container.DataItem, "Text") %></a>
</li>
</ItemTemplate>
</asp:Repeater>
</ul>
</div>
最后在注册后在页面中使用它,我有:
<uc:ContextMenu runat="server" OnCommand="SomeMethod">
<Items>
<uc:ContextMenuItem Name="SomeName" Text="SomeText" />
</Items>
</uc:ContextMenu>
现在,当我运行它时,我NullReference
在线收到一个解析错误
<uc:ContextMenuItem Name="SomeName" Text="SomeText" />
不运行时,Visual Studio 还说Element 'ContextMenuItem' is not a known element.
它在运行时也没有捕获异常,所以也许这样我可以查看堆栈跟踪以了解发生了什么。我只是想知道是否有人遇到过类似的问题。任何帮助表示赞赏。