Контроллер не обновляет модель представления Razor: как передать значение в представление - PullRequest
0 голосов
/ 10 апреля 2020

Я пытаюсь настроить простую сборку веб-страницы с помощью Razor и. net Core.

Мой контроллер:

[HttpGet("/api/employees")]

public ActionResult Index()
{
    MyPaginationModel aux = new MyPaginationModel();
    aux.Employees = new List<EmployeeViewModel> {
    new EmployeeViewModel{
        Name = "Test",
        Surname = "Test",
        }
    };
    return View(aux);
}

мой взгляд:

@page


@model MyPaginationModel

<table class="table table-striped">
    @foreach (var item in Model.Employees)
    {
        <tr>
            <td>@item.Name</td>
            <td>@item.Surname</td>
        </tr>
    }
</table>

MyPaginationModel:

public class MyPaginationModel : PageModel
{
    public List<EmployeeViewModel> Employees { get; set; }
}

И EmployeeViewModel:

public class EmployeeViewModel
{
    public string Name { get; set; }
    public string Surname { get; set; }
}

Жалуется на нулевую ссылку на исключение в Model.Employees. Итак, каким-то образом мне нужно передать экземпляр, который я создал в контроллере, представлению.

1 Ответ

1 голос
/ 10 апреля 2020

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

Дополнительная информация: Razor Pages в ASP. NET Ядро

Решение :

  1. Удалить: @page

  2. Добавить: @using MyPaginationModel Namespace

...