Jesper Petersen Ответов: 1

Не существует аргумента, соответствующего требуемому формальному параметру


Это похоже на то, как я пытаюсь заставить свой контроллер меню Показывать меню, которые я добавил в базу данных, чтобы увидеть, должны ли они отображаться или нет.

но если, например, я просто получаю контент, то я не получу контент.

мой файл Menu.cshtml.

@page
@model NewWebsite_Site_2018.Pages.View.ViewBar_Info.MenuModel

@foreach (var item in Model.GetListMenu)
{
    <a>@item.Name</a>
}


Меню.cshtml по.в CS
public List<ContentInfo> GetListMenu { get; set; }


        private readonly DBContext _dbContext;

        public MenuModel(DBContext context)
        {
            _dbContext = context;
        }
        

        public void OnGet()
        {
            GetListMenu = _dbContext.ContentInfo.Where(i => i.ShowMenu == true).OrderByDescending(i => i.Id).ToList();
        }


Это мой файл модели меню, который мне нужно использовать в моем файле _layout.cshtml.

Файл _Layout.cshtml по Здесь:
@{
    var menuModel = new NewWebsite_Site_2018.Pages.View.ViewBar_Info.MenuModel();
}


@Html.Partial("View/ViewBar_Info/Menu.cshtml", menuModel.GetListMenu)




Вопрос в том, как я могу заставить свое меню появиться?

Ошибка: Не существует аргумента, соответствующего требуемому формальному параметру "контекст" менумодели.MenuModel(DBContext)'

Что я уже пробовал:

private MenuModel(DBContext context)
        {
            _dbContext = context;
        }


public MenuModel(DBContext context): base()
        {
            _dbContext = context;
        }

1 Ответов

Рейтинг:
2

Richard Deeming

Ошибка довольно очевидна:

Ваш MenuModel класс имеет один конструктор, который требует DbContext параметр:

public MenuModel(DBContext context)

Вы пытаетесь создать экземпляр этого класса, вызвав конструктор без передачи каких-либо параметров:
var menuModel = new NewWebsite_Site_2018.Pages.View.ViewBar_Info.MenuModel();

Компилятор не может найти конструктор, который не принимает никаких параметров, и поэтому он выдает ошибку компилятора из вашего вопроса.

Вам либо нужно передать параметр конструктору:
var menuModel = new NewWebsite_Site_2018.Pages.View.ViewBar_Info.MenuModel(new DBContext());

или добавьте в класс конструктор без параметров:
public MenuModel() : this(new DBContext()) 
{
}