2

カスタム コンテキスト メニューをユーザー コントロールとして作成しようとしています。このユーザー コントロールのコード ビハインドは次のようになります。

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.実行時にも例外をキャッチしないと言うので、スタック トレースを見て何が起こっているのかを確認できます。誰かがこのような同様の問題に遭遇したかどうか疑問に思っていました. どんな助けでも大歓迎です。

4

1 に答える 1