Как отобразить массив меню в Razor View из appsettings.json в ASP.NET Core RazorPages - PullRequest
0 голосов
/ 08 октября 2018

Как отобразить массив меню в Razor View из appsettings.json в ASP.NET Core RazorPages, я остановился на этом через несколько дней.Кто-нибудь может дать мне решение для этого, пожалуйста?

public void OnGet()
{
    ViewData["Test"] = Test().AsEnumerable();
}

public class AppMenu
{
    public string MenuName { get; set; } // Module Name
    public List<AppMenu> MenuList { get; set; } = new List<AppMenu>();
}

public string Test()
{
    var apps = new List<AppMenu>();
    List<string[]> listMenus = new List<string[]>();
    var hpMenu = new[] { "xxx", "xxx", "xxx", "xxx", "xxx" };
    var vtMenu = new[] { "yyy", "yyy", "yyy", "yyy", "yyy" };
    var purAgr = new[] { "zzz", "zzz", "zzz" };
    var mainManu = new[] { "aaa", "aaa"};
    listMenus.Add(hpMenu);
    listMenus.Add(vtMenu);
    // listMenus.Add(hpMenu)
    foreach (var main in mainManu)
    {
        AppMenu appmainmenu = new AppMenu();
        appmainmenu.MenuName = main;
        apps.Add(appmainmenu);
    }
    for (var i = 0; i <= listMenus.Count - 1; i++)
    {
        List<AppMenu> lsmenu = new List<AppMenu>();
        foreach (var menustr in listMenus[i])
        {
            AppMenu appmenu = new AppMenu();
            appmenu.MenuName = menustr;
            if (menustr == "Purchase Agreement")
            {
                foreach (var it in purAgr)
                {
                    AppMenu purr = new AppMenu();
                    purr.MenuName = it;
                    appmenu.MenuList.Add(purr);
                }
            }
            lsmenu.Add(appmenu);
        }
        apps[i].MenuList = lsmenu;
    }
    return JsonConvert.SerializeObject(apps);
}

Любой может помочь мне показать меню, пожалуйста, что-то вроде этого.Index.cshtml (например)

@foreach (var test in ViewData["Test"])
{
    <p>@test</p>
}

1 Ответ

0 голосов
/ 08 октября 2018

Я не уверен, что именно вы пытаетесь сделать и почему вы конвертируете JsonString в перечисляемое.

Если вам нужны эти классы в вашем представлении, вы можете использовать их, определив список менюв вашей модели:

public List<AppMenu> AppMenues;
public void OnGet()
{
    AppMenues = Test();
}

В вашей тестовой функции вы просто должны вернуть список, который вы создаете.Я буду использовать имя вашей функции, но вы действительно должны переименовать его:

public List<AppMenu> Test()
{
    var apps = new List<AppMenu>();
    //your filling logic
    return apps;
}

Теперь вы можете использовать его в своей RazorPage:

@page
@model HomeModel
@{
    foreach (var i in Model.AppMenues)
    {
        <p>@i.MenuName</p>
    }
}

Имя вашей модели должно отличаться, еслиВы не находитесь на странице с именем home.

...