diff --git a/src/admin/Bootstrap.Admin/Controllers/Api/CategoryController.cs b/src/admin/Bootstrap.Admin/Controllers/Api/CategoryController.cs index 53944ae3..809d295f 100644 --- a/src/admin/Bootstrap.Admin/Controllers/Api/CategoryController.cs +++ b/src/admin/Bootstrap.Admin/Controllers/Api/CategoryController.cs @@ -44,5 +44,15 @@ namespace Bootstrap.Admin.Controllers.Api { return MenuHelper.RetrieveMenus(User.Identity.Name).Where(m => m.Menus.Count() > 0).OrderBy(m => m.Name).Select(m => m.Name); } + + /// + /// 通过指定菜单检查子菜单是否有子菜单 + /// + /// + [HttpGet("{id}")] + public bool ValidateMenuBySubMenu(string id) + { + return !MenuHelper.RetrieveAllMenus(User.Identity.Name).Where(m => m.ParentId == id).Any(); + } } } diff --git a/src/admin/Bootstrap.Admin/Views/Admin/Menus.cshtml b/src/admin/Bootstrap.Admin/Views/Admin/Menus.cshtml index 6ffc7bd5..2a756e05 100644 --- a/src/admin/Bootstrap.Admin/Views/Admin/Menus.cshtml +++ b/src/admin/Bootstrap.Admin/Views/Admin/Menus.cshtml @@ -148,7 +148,7 @@
- diff --git a/src/admin/Bootstrap.Admin/wwwroot/js/menus.js b/src/admin/Bootstrap.Admin/wwwroot/js/menus.js index 7579a1d5..626c9c35 100644 --- a/src/admin/Bootstrap.Admin/wwwroot/js/menus.js +++ b/src/admin/Bootstrap.Admin/wwwroot/js/menus.js @@ -340,4 +340,22 @@ $(function () { var val = defaultVal === $app.val() ? '0' : '1'; $category.lgbSelect('val', val); }) + + if ($.isFunction($.validator)) { + $.validator.addMethod("menuChild", function (value, element) { + var id = $("#menuID").val(); + var check = id === "" || value === "菜单"; + if (!check) { + $.get({ + url: $.formatUrl('api/Category/ValidateMenuBySubMenu/' + id), + async: false, + cache: false, + success: function (result) { + check = result + } + }); + } + return check; + }, "拥有子菜单时菜单类型不可更改为资源或者按钮"); + } }); \ No newline at end of file diff --git a/src/admin/Bootstrap.Admin/wwwroot/lib/longbow-select/longbow-select.js b/src/admin/Bootstrap.Admin/wwwroot/lib/longbow-select/longbow-select.js index 84205ba0..4ae2b817 100644 --- a/src/admin/Bootstrap.Admin/wwwroot/lib/longbow-select/longbow-select.js +++ b/src/admin/Bootstrap.Admin/wwwroot/lib/longbow-select/longbow-select.js @@ -114,7 +114,7 @@ // save attributes var attrs = []; - ["id", "name", "data-default-val"].forEach(function (v, index) { + ["id", "name", "class", "data-valid", "data-default-val"].forEach(function (v, index) { var value = that.$element.attr(v); if (value !== undefined) attrs.push({ name: v, value: value }); });