Razor Pages - модель привязки сложного объекта к параметру маршрута - PullRequest
0 голосов
/ 20 декабря 2018

У меня есть довольно тривиальная настройка шаблона маршрута для моей страницы в Asp.Net Core.

@page "/Meetings"

Наряду с этим у меня есть настройка формы для отправки некоторых значений

 <form method="post">
        <input asp-for="PageParameters.PageSize" />
        @if (Model.XPaginationDto.PreviousPageLink != null)
        {
            <button type="submit" asp-route-pageNum="@(Model.XPaginationDto.CurrentPage - 1)" class="btn btn-dark text-light">Previous</button>
        }
        @for (var i = 1; i <= Model.XPaginationDto.TotalPages; i++)
        {
            <button type="submit" asp-route-pageNum="@i" class="btn btn-dark text-light">@i</button>
        }
</form>

У меня есть сложный объект в моей настройке PageModel, как показано ниже.Обратите внимание, что я установил [BindProperties(SupportsGet = true)] в моей PageModel, чтобы я мог разбивать на страницы, даже когда пользователи делают запросы на получение.

 public class PageParametersDto
    {
        public int PageNum { get; set; } = 1;
        public int PageSize { get; set; } = 2;
        public string Filters { get; set; }
        public string Sorts { get; set; }
    }

Когда форма публикуется, свойство PageSize правильно связывается, поскольку вход используетasp-for Атрибут.Однако свойство PageNum не ограничено.Это удивительно, потому что привязка модели ищет данные формы, маршрута и запроса для привязки свойств.

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

Т.е. когда я пытаюсь перенаправить на страницу с параметрами, она не привязывает свойство PageNum.

return RedirectToPage("/Meetings", new { PageParameters.PageNum, PageParameters.PageSize }); 

Я, конечно, могу сделать ниже:

public IActionResult OnPost(int? PageNum)
        {

            return RedirectToPage("/Meetings", new { PageNum, PageParameters.PageSize });
        }

Когда происходит перенаправление, по запросу GET оба параметра связаны правильно.Почему сообщение формы не может сделать то же самое?

Я уже исследовал это на https://www.learnrazorpages.com/razor-pages/model-binding#binding-complex-collections. Ни один из примеров не объясняет, как связать сложные объекты с параметрами маршрута.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...