我有一个非常简单Custom Control
派生自HierarchicalDataBoundControl
并用于使用HierarchicalObjectDataSource
呈现菜单(以及链接列表)。我使用了一个可用的示例@CSTrüter,如果有人会感兴趣的话,并将其扩展一点。
现在我正在尝试进一步扩展它以支持不引人注目的AJAX
,但不是模仿anchors
,而是模仿Ajax.ActionLink
的输出,不幸的是直到现在还没有成功,我认为也许我的方法是错的,这就是原因。目前,此控件可以与标记<cc:Menu runat="server"...
的形式一起使用,另一个标记定义菜单的来源,ID
在DataSourceID
属性的菜单标记中定义。我认为我可以将Ajax
对象传递给渲染函数并使用原始Ajax.ActionLink
方法,但是......为了使控件可以{{1}的形式使用<%: cc.Menu.Render(Ajax,...) %>
方法应该是静态的,因此菜单不能限制为源。现在,我可以在这个静态方法中实例化一个新的cc.Menu,但它不会绑定,因为它不参与页面布局,但如果我将它添加到控件集合(假设我将通过也是Render
对象),由于在迭代过程中更改了集合,因此页面将不会呈现。
如果有人指出我其他方向,我会很高兴。也许某种程度上我可以传递一个Page
对象作为菜单标签的一个属性?如果是,那么我如何从控件中获取Ajax对象?或者可能有另一种方式来模仿AjaxOptions
的输出?