Для передачи параметра модели с помощью нумерации страниц в ASP.Net Core - PullRequest
0 голосов
/ 02 октября 2019

Я использую PagedList для работы над таблицей для моего приложения ASP.Net Core. Мне нужно передать модель контроллеру при смене страницы, однако она не отправляется.

Раздел кода страницы в представлении:

<pager class="pager" list="@Model.UserList" asp-action="Index" asp-controller="User" asp-route-model ="@Model" param-page-number="page" options="@PagedListRenderOptions.ClassicPlusFirstAndLast" />

И моя подпись контроллераis:

public ActionResult Index(UsersModel model, int? page)
{
}

Модель всегда равна нулю и не содержит никаких значений модели. Как мне это исправить?

1 Ответ

0 голосов
/ 03 октября 2019

Невозможно передать весь объект модели, используя asp-route-{value} или asp-all-route-data.

asp-route для string типа и asp-all-route-data предназначен для IDictionary<string,string> типа

Я предлагаю вам передать данные модели вручную, например

@{
var parms = new Dictionary<string, string>
            {
                { "Id",Model.Id.ToString() },
                {"Name",Model.Name },
                //...
            };
}

<a asp-action="Index" asp-controller="User" asp-all-route-data="parms">Test</a>

Это будет работать как queryString.

См. https://docs.microsoft.com/en-us/aspnet/core/mvc/views/tag-helpers/built-in/anchor-tag-helper?view=aspnetcore-3.0#asp-all-route-data

https://forums.asp.net/t/1984183.aspx?Passing+Model+Object+in+route+values+of+Action+link

...