Боковое меню в ASP.NET Core Razor Pages с веб-API

Может ли кто-нибудь дать мне пример создания бокового меню в ASP.net Core? У меня есть пример ниже, но я не знаю, как им пользоваться.

[
  {
    "MenuName": "Hirer HP Transactions",
    "MenuList": [
      {
        "MenuName": "HP Application Master",
        "MenuList": []
      },
      {
        "MenuName": "HP Hirer Master",
        "MenuList": []
      },
      {
        "MenuName": "HP Collection",
        "MenuList": []
      },
      {
        "MenuName": "Post Dated Cheque",
        "MenuList": []
      },
      {
        "MenuName": "Operation Reports",
        "MenuList": []
      }
    ]
  },
  {
    "MenuName": "Vehicle Trading Transactions",
    "MenuList": [
      {
        "MenuName": "Purchase Agreement",
        "MenuList": [
          {
            "MenuName": "Open Vehicle Module",
            "MenuList": []
          },
          {
            "MenuName": "Open / Unsold Vehicles",
            "MenuList": []
          },
          {
            "MenuName": "Import Vehicle Delivery Monitoring",
            "MenuList": []
          }
        ]
      },
      {
        "MenuName": "Sales Order",
        "MenuList": []
      },
      {
        "MenuName": "Sales Agreement",
        "MenuList": []
      },
      {
        "MenuName": "Stock Master",
        "MenuList": []
      },
      {
        "MenuName": "Operation Reports",
        "MenuList": []
      }
    ]
  }
]
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
0
1 029
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Короткий ответ :

  1. запросить вашу базу данных и получить данные меню
  2. преобразовать меню в HTML.

Поскольку у вас уже есть данные меню, я покажу вам, как их визуализировать с помощью примерно 40 строк кода JavaScript:

Во-первых, создайте Sidebar.lib.js, который помогает отображать ваши меню в формате html:

function SideBar(menus=[],onclick){
    this.menus=menus;
    this.onclick= onclick;
}

SideBar.prototype.render = function(){
    return `<ul class = "nav bd-sidenav">${this.menus.map(m=> this._renderListItem(m)).join("")}</ul>`;
}

SideBar.prototype.attach=function(elementContainer = new HTMLElement()){
    var innerHtml = this.render();
    elementContainer.innerHTML= innerHtml;
    elementContainer.onclick = (e)=>{
        e.preventDefault();
        e.stopPropagation();
        if (e.srcElement.tagName.toLowerCase()= = "a"){
            if (this.onclick != null) this.onclick(e.target);
        }
        return false;
    };
}

SideBar.prototype._renderListItem = function(li){
    if (Array.isArray(li.MenuList) && li.MenuList.length >0 ){
        return `<li>
            <a href = "#${li.MenuName}">${li.MenuName}</a>
            <ul> ${li.MenuList.map(item=> this._renderListItem(item)).join(" ")} </ul>
        </li>`;
    }
    return `<li><a href = "#${li.MenuName}" >${li.MenuName}</a></li>`;
}

и теперь вы можете динамически создавать боковую панель:

var x = new SideBar(menus);
// add your own onclick as you like 
x.onclick = t=>{
    console.info(`clicked!`,t);
};
x.attach(document.querySelector("nav.collapse"));

Спасибо, ваш код очень полезен, но я могу задать вам еще один вопрос. Как вставить JSON в БД

Han Whui Teh 15.10.2018 13:38

например (ВСТАВИТЬ В меню () ЗНАЧЕНИЯ ();)

Han Whui Teh 15.10.2018 13:38

Поскольку MenuList - это массив, в БД DataType не имеет массива. Я знаю, что мой логин неверен, но любое объяснение может позволить мне понять это, пожалуйста.

Han Whui Teh 15.10.2018 13:41

@HanWhuiTeh Я видел, как вы добавили тег MySQL. Вы используете MySQL? Начиная с MySQL 5.7, вы можете вставлять json напрямую. См. [Ссылку здесь] (dev.mysql.com/doc/refman/5.7/en/json.html)

itminus 15.10.2018 13:43

ВСТАВИТЬ В book (title, tags) ЗНАЧЕНИЯ ('ECMAScript 2015: Антология SitePoint', '[«JavaScript», «ES2015», «JSON»]');

Han Whui Teh 16.10.2018 04:07

изить что-нибудь вроде этого? А что такое MenuList DataType?

Han Whui Teh 16.10.2018 04:08

@HanWhuiTeh Вложение разрешено в элементах массива JSON и значениях ключей объекта JSON. Так что с массивом JSON все будет в порядке.

itminus 16.10.2018 04:12

Извините, я не понимаю, у вас есть пример, который вы можете показать мне, пожалуйста ~

Han Whui Teh 16.10.2018 06:03

@HanWhuiTeh создать таблицу: create table mytable ( title VARCHAR(255), tags JSON );; вставить в: insert into mytable values ('ES2015 : Good Parts','[{"MenuName":"m1","MenuList":[]},{"MenuName":"m2","M‌​enuList":[]}]');

itminus 16.10.2018 06:40

Другие вопросы по теме