■96068 / inTopicNo.1) |
一覧がモデルのいちプロパティの場合でのPagedList使用 |
□投稿者/ はる (39回)-(2020/10/19(Mon) 18:58:58)
|
分類:[.NET 全般]
VisualStudio2019のASP.NET MVCでEntityFrameworkのコードファーストにて開発しています。 (先ほども別件で質問してしまいました。何度も恐縮です。)
https://docs.microsoft.com/ja-jp/aspnet/mvc/overview/older-versions/getting-started-with-ef-5-using-mvc-4/sorting-filtering-and-paging-with-the-entity-framework-in-an-asp-net-mvc-application
を参考にソート変更+ページング可能な一覧を持つ検索画面を作成しています。 このチュートリアルでは、ソート(GET)も検索(POST)も同じIndexメソッドで実装されています。
それを踏まえて以下のようなモデルをバインドして作成しています。
■ビューモデル public class SearchTvView //このクラスは画面からの引数受け取り用 { [DisplayName("ソート順")] public string SortOrder { get; set; } //こちらはチュートリアルにある「sortOrder」パラメータです。
[DisplayName("アニメフラグ")] public bool IsAnime { get; set; } //アニメ番組かどうか
[DisplayName("結果一覧")] public List<TvItemView> TvItemsView { get; set; } }
public class TvItemView //このクラスは一覧画面表示用 { [DisplayName("テレビID")] public string TvId { get; set; }
[DisplayName("番組名")] public bool TvName { get; set; }
[DisplayName("アニメフラグ")] public bool IsAnime { get; set; } }
このような検索項目のチェックボックスと結果一覧を含めた「SearchTvView」というモデルを作っており、 結果の一覧を「PagedList」でページングしようとしています。
■ビュー @model xxx.Models.SearchTvView
<label> @Html.CheckBoxFor(m => m.IsAnime, new { @Selected = "Selected" })アニメ </label>
<table class="table"> <tr> <th> @Html.ActionLink(Html.DisplayNameFor(model => result.TvId).ToHtmlString(), "Index") </th> </tr> <tr> <th> @Html.ActionLink(Html.DisplayNameFor(model => result.TvName).ToHtmlString(), "Index") </th> </tr> @foreach (var item in Model.Results) { <tr> <td> @Html.DisplayFor(modelItem => item.TvId) </td> <td> @Html.DisplayFor(modelItem => item.TvName) </td> </tr> } </table>
このビューの「@model」のところで、「PagedList」を使う為に、 以下のように一覧でバインドされているモデルを宣言する必要があるようなのですが、 そうするとSearchTvViewのプロパティを認識することができず、エラーとなっていまいます。
@model PagedList.IPagedList<xxx.Models.SearchTvView.TvItemsView> @using PagedList.Mvc
元々の @model xxx.Models.SearchTvView を宣言した状態で、xxx.Models.SearchTvView.TvItemsViewに対するPagedListを使用することはできないのでしょうか?
そもそもGETパラメータをモデルで受け取るやり方が一般的ではないのでしょうか?
宜しくお願い致します。
|
|