Может ли кто-нибудь дать мне пример создания бокового меню в 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": []
}
]
}
]






Короткий ответ :
Поскольку у вас уже есть данные меню, я покажу вам, как их визуализировать с помощью примерно 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"));
например (ВСТАВИТЬ В меню () ЗНАЧЕНИЯ ();)
Поскольку MenuList - это массив, в БД DataType не имеет массива. Я знаю, что мой логин неверен, но любое объяснение может позволить мне понять это, пожалуйста.
@HanWhuiTeh Я видел, как вы добавили тег MySQL. Вы используете MySQL? Начиная с MySQL 5.7, вы можете вставлять json напрямую. См. [Ссылку здесь] (dev.mysql.com/doc/refman/5.7/en/json.html)
ВСТАВИТЬ В book (title, tags) ЗНАЧЕНИЯ ('ECMAScript 2015: Антология SitePoint', '[«JavaScript», «ES2015», «JSON»]');
изить что-нибудь вроде этого? А что такое MenuList DataType?
@HanWhuiTeh Вложение разрешено в элементах массива JSON и значениях ключей объекта JSON. Так что с массивом JSON все будет в порядке.
Извините, я не понимаю, у вас есть пример, который вы можете показать мне, пожалуйста ~
@HanWhuiTeh создать таблицу: create table mytable ( title VARCHAR(255), tags JSON );; вставить в: insert into mytable values ('ES2015 : Good Parts','[{"MenuName":"m1","MenuList":[]},{"MenuName":"m2","MenuList":[]}]');
Спасибо, ваш код очень полезен, но я могу задать вам еще один вопрос. Как вставить JSON в БД