动态剑道菜单,使用 Ajax 调用操作



这是我的代码,菜单显示。

                @(Html.Kendo().Menu()
                    .Name("MainMenu")
                    .BindTo(_userMenu.UserMenuItems, mappings =>
                    {
                        mappings.For<UserMenuItemModel>(binding => binding.ItemDataBound((item, UserMenuItemModel) =>
                        {
                            item.Text = UserMenuItemModel.Description;
                            item.ActionName = UserMenuItemModel.ActionName;
                            item.ControllerName = UserMenuItemModel.ControllerName;
                            item.HtmlAttributes = (new { data-ajax = "true",  });
                        })
                   .Children(UserMenuItemModel => UserMenuItemModel.SubMenuItems));
            mappings.For<UserMenuItemModel>(binding => binding.ItemDataBound((item, UserMenuItemModel) =>
            {
                item.Text = UserMenuItemModel.Description;
                item.ActionName = UserMenuItemModel.ActionName;
                item.ControllerName = UserMenuItemModel.ControllerName;
            }));
            })                
            )

但是,单击一个项目会进行非 ajax 调用,这在我们的架构中不起作用。

基本上,对于剑道菜单项,我正在拍摄具有与此功能完全相同的链接。

                <li>
                @Ajax.ActionLink(item.Description, item.ActionName, item.ControllerName, ajaxMainMenuOptions)
            </li>

我以为我将能够为每个项目设置 HTMLAttributes,但这是只读的。

我们的动态菜单是分层的,没有级别限制。 我正在用递归部分页面的另一个角度工作,但在使用 CSS 时遇到了很多麻烦。

剑道菜单绑定到我们的自引用模型非常简单,我只需要弄清楚如何让它进行 Ajax.ActionLink 调用。

任何指示都非常感谢。

谢谢。

刚刚意识到属性有一个添加。

这似乎是我们拍摄的目的。

  @(Html.Kendo().Menu()
                    .Name("MainMenu")
                    .BindTo(_userMenu.UserMenuItems, mappings =>
                    {
                        mappings.For<UserMenuItemModel>(binding => binding.ItemDataBound((item, UserMenuItemModel) =>
                        {
                            item.Text = UserMenuItemModel.Description;
                            item.ActionName = UserMenuItemModel.ActionName;
                            item.ControllerName = UserMenuItemModel.ControllerName;
                            item.LinkHtmlAttributes.Add("data-ajax", "true");
                            item.LinkHtmlAttributes.Add("data-ajax-method", "GET");
                            item.LinkHtmlAttributes.Add("data-ajax-mode", "replace");
                            item.LinkHtmlAttributes.Add("data-ajax-update", "#MainBody");

                        })
                   .Children(UserMenuItemModel => UserMenuItemModel.SubMenuItems));
                        mappings.For<UserMenuItemModel>(binding => binding.ItemDataBound((item, UserMenuItemModel) =>
                        {
                            item.Text = UserMenuItemModel.Description;
                            item.ActionName = UserMenuItemModel.ActionName;
                            item.ControllerName = UserMenuItemModel.ControllerName;
                            item.LinkHtmlAttributes.Add("data-ajax", "true");
                            item.LinkHtmlAttributes.Add("data-ajax-method", "GET");
                            item.LinkHtmlAttributes.Add("data-ajax-mode", "replace");
                            item.LinkHtmlAttributes.Add("data-ajax-update", "#MainBody");
                        }));
                    })
            )

对于其他任何人,这是一个使用分层的自引用模型构建的完全动态菜单。 UserMenuItemModel 包含一个列表

添加关键字,因为我真的从未找到过这样的东西,剑道菜单 Ajax动作链接分层自引用

希望这对其他人有所帮助。

最新更新