[ad_1]
皆さん、こんにちは!
ビューに問題があります。
説明: 主キーと副キーに関連するいくつかのテーブルを持つデータベースがあります。
テーブル:
論文
カテゴリー
サブカテゴリ
私がやろうとしているのは、異なるカテゴリの製品のリストを表示することです。
しかし、名前の代わりにIDが表示されます。
このような:
サブカテゴリ ID = 1
トンボ =サムスンs4
説明 = 黒、白、金
価格 = 75,00
ストック = 35
私が見ているものを示すリンクをクリックしてください:
リンク
SubCategory Id の代わりに Name を表示してほしいです。例: スマートフォン、洗濯機、電子レンジ …
私が試したこと:
モデル -> ArticleModels.cs
public class ArticleModels { public int ART_Id { get; set; } [Display(Name = "Sous Categorie")] public int ART_SCAT_Id { get; set; } [Display(Name = "Libelle")] public string ART_Libelle { get; set; } [Display(Name = "Description")] public string ART_Description { get; set; } [Display(Name="Prix")] public decimal ART_Prix { get; set; } [Display(Name = "Stock")] public int ART_Stock { get; set; } }
DAL -> ArticleBL.cs
public static List<ArticleModels> SelectAllArticle() { var rtn = new List<ArticleModels>(); using (var context = new WebShopEntities()) { // ReSharper disable once LoopCanBeConvertedToQuery foreach (var item in context.Article) { rtn.Add(new ArticleModels { ART_Id = item.ART_Id, ART_SCAT_Id = item.ART_SCAT_Id, ART_Libelle = item.ART_Libelle, ART_Description = item.ART_Description, ART_Prix = item.ART_Prix, ART_Stock = item.ART_Stock }); } } return rtn; }
コントローラ -> ArticleControllers.cs
public ActionResult Index() { var lstClient = ArticleBL.SelectAllArticle().ToList(); return View(lstClient); }
これは私のテーブルのサブカテゴリです
public int SCAT_Id { get; set; } public int SCAT_CAT_Id { get; set; } public string SCAT_Libelle { get; set; }
解決策 1
上に示した Model クラスがデータベースにマップされた Entity Model クラスである場合、これはコードから非常に明確です。ViewModel クラスを作成し、それをビューで使用する必要があるため、最初に ViewModel を作成します。
public class ArticleViewModel { public int ART_Id { get; set; } [Display(Name = "Sous Categorie")] public string SCAT_Libelle { get; set; } [Display(Name = "Libelle")] public string ART_Libelle { get; set; } [Display(Name = "Description")] public string ART_Description { get; set; } [Display(Name="Prix")] public decimal ART_Prix { get; set; } [Display(Name = "Stock")] public int ART_Stock { get; set; } }
次に、コントローラーアクションでクエリを変更して、両方のテーブルを結合します ART_SCAT_ID 結果を新しい作成ビューモデルのタイプのリストに投影します。この場合、メソッドの定義を更新する必要があります。
public static List<ArticleViewModel> SelectAllArticle() { var articles = new List<ArticleViewModel>(); using (var context = new WebShopEntities()) { var result = from article in context.Article join subCategory in context.subCategory on article.ART_SCAT_Id equals subCategory.SCAT_CAT_Id foreach (var item in result) { rtn.Add(new ArticleViewModel { ART_Id = article.ART_Id, SCAT_Libelle = subCategory.SCAT_Libelle, ART_Libelle = article.ART_Libelle, ART_Description = article.ART_Description, ART_Prix = article.ART_Prix, ART_Stock = article.ART_Stock }); } } return articles; }
それが役に立てば幸い。
解決策 2
こんにちは@Ehsan Sajjad、
ご協力いただきありがとうございます。
私はこのように解決するために到着しました:
var lstArt = new List<ArticleModels>(); using (var ctx = new WebShopEntities1()) { lstArt = ctx.Article.Select(a => new ArticleModels() { ART_Id = a.ART_Id, ART_SCAT_Id = a.ART_Stock, ART_Libelle = a.ART_Libelle, ART_Description = a.ART_Description, ART_Prix = a.ART_Prix, ART_Stock = a.ART_Stock, SCAT_Libelle = a.SousCategorie.SCAT_Libelle }).ToList(); } return lstArt;
public class ArticleModels { public int ART_Id { get; set; } public int ART_SCAT_Id { get; set; } [Display(Name = "Libelle")] public string ART_Libelle { get; set; } [Display(Name = "Description")] public string ART_Description { get; set; } [Display(Name = "Prix")] public decimal ART_Prix { get; set; } [Display(Name = "Stock")] public int ART_Stock { get; set; } [Display(Name = "Sous Categorie")] public string SCAT_Libelle { get; set; } }
そしてそれはうまくいきます! 🙂
[ad_2]
Source link
コメント