[ad_1]
私は .net 5 mvc に取り組んでおり、テーブル名 cinimas have 5 rows があります。
私の問題 カスタム ビュー モデルでこれらの 5 行を表示できません。
試してみましたが、行が表示されません
私が試したこと
1- モデルの作成
public class Cinema:IEntityBase { [Key] public int Id { get; set; } [Display(Name = "Cinema Logo")] [Required(ErrorMessage = "Cinema logo is required")] public string Logo { get; set; } [Display(Name = "Cinema Name")] [Required(ErrorMessage = "Cinema name is required")] public string Name { get; set; } }
2-テーブルからビュー モデルとしてデータを表示するカスタム モデル ビューを作成します。
public class CinimaViewModels { public string Logo { get; set; } public string Name { get; set; } }
3-create service Interface ICinemasService には、データを表示するための定義があります。
public interface ICinemasService:IEntityBaseRepository<Cinema> { IQueryable<CinimaViewModels>GetAllCinimas(); }
ステップ番号4では、テーブルには5行ありますが、行は返されませんでした。
では、この問題を解決する方法
カスタム ビュー モデル CinimaViewModels のデータを Queryable として返す必要がありますが、何も表示されません
この問題をどのように解決しますか?
これをチェックして、モデルから直接データを返し、以下のように 5 行を返します。
var cinmas2 = _context.Cinemas.ToList();
ただし、以下のようにステップ 4 のビュー モデルから行が表示されません。
私が試したこと:
4- implement interface on CinemasService class public class CinemasService:EntityBaseRepository<Cinema>, ICinemasService { private readonly AppDbContext _context; public CinemasService(AppDbContext context) : base(context) { _context = context; } public IQueryable<CinimaViewModels> GetAllCinimas() { var cinmas = new Cinema(); var response = new List<CinimaViewModels> { new CinimaViewModels { Description=cinmas.Description, Logo=cinmas.Logo, Name=cinmas.Name } }; return response.AsQueryable(); } }
解決策 1
見積もり:これをチェックして、モデルから直接データを返し、以下のように 5 行を返します。
C#var cinmas2 = _context.Cinemas.ToList();
ただし、以下のようにステップ 4 のビュー モデルからは行が表示されません。
C#public IQueryable<CinimaViewModels> GetAllCinimas() { var cinmas = new Cinema(); var response = new List<CinimaViewModels> { new CinimaViewModels { Description=cinmas.Description, Logo=cinmas.Logo, Name=cinmas.Name } }; return response.AsQueryable(); }
これで、5 つのシネマを返すコードが 1 つできました。 しかし、あなたはそれを無視することを選択し、代わりに単一のリストを含むリストを作成しました CinimaViewModels
ブランクからコピーされたインスタンス Cinema
実例。
そして、あなたは真剣に問題が何であるかを理解できませんか?
取得するために既に必要な作業コードを使用します Cinema
インスタンス。 次に、それを使用してシーケンスを入力します CinimaViewModels
インスタンス。
public IQueryable<CinimaViewModels> GetAllCinimas() { return _context.Cinemas.Select(cinema => new CinimaViewModels { Description = cinema.Description, Logo = cinema.Logo, Name = cinema.Name, }); }
[ad_2]
コメント