Я пытаюсь показать продукты, которые имеют GroupId
и SubGroupId
. Я использую foreach, чтобы показать каждый subGroup
, который имеет GroupId = ParentId
.
Пока что он работает правильно, когда я хочу показать продукты с SubgroupId
в качестве subGroupId в foreach, он не работает.
Вот мой код:
Групповая модель класса:
[Key]
public int CompanyProductGroupId { get; set; }
[Display(Name = "عنوان گروه")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
public string CompanyProductGroupTitle { get; set; }
[Display(Name = "توضیح مختصر")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
public string CompanyProductGroupDes { get; set; }
[Display(Name = "حذف شده ؟")]
public bool IsDelete { get; set; }
[Display(Name = "تصویر")]
public string CompanyProductGroupPic { get; set; }
[Display(Name = "گروه اصلی")]
public int? ParentId { get; set; }
[ForeignKey("ParentId")]
public List<CompanyProductGroup> CourseGroups { get; set; }
[InverseProperty("CompanyProductGroup")]
public List<CompanyProduct> CompanyProduct { get; set; }
[InverseProperty("Group")]
public List<CompanyProduct> SubGroup { get; set; }
Класс модели изделия:
[Key]
public int CompanyProductId { get; set; }
[Display(Name = "گروه اصلی محصول")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public int CompanyProductGroupId { get; set; }
[Display(Name = "گروه فرعی محصول")]
public int? SubGroupId { get; set; }
[Display(Name = "عنوان محصول")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string CompanyProductTitle { get; set; }
[Display(Name = "تصویر محصول")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string CompanyProductPic { get; set; }
[Display(Name = "تصویر پس زمینه محصول")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string CompanyProductBackPic { get; set; }
[Display(Name = "تصویر صفحه گروه محصول")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string CompanyProducGtPic { get; set; }
[Display(Name = "متن آدرس محصول")]
[MaxLength(60, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string ProductGroupUrl { get; set; }
[Display(Name = "توضیحات محصول")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string CompanyProductText { get; set; }
[Display(Name = "تاریخ ارسال محصول")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
public string CompanyProductSendDate { get; set; }
[Display(Name = "تاریخ بروزرسانی محصول")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
public string CompanyProductModifiedDate { get; set; }
[Display(Name = "صاحب محصول")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
public string CompanyProductOwner { get; set; }
[Display(Name = "نویسنده")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string CompanyProductWriter { get; set; }
[Display(Name = "عنوان گوگل")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string CompanyProductgoogleTitle { get; set; }
[Display(Name = "توضیحات گوگل")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
public string CompanyProductMetaGoogle { get; set; }
[Display(Name = "کلمات کلیدی")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
public string CompanyProductKeywords { get; set; }
[Display(Name = "توضیح مختر(200 کاراکتر)")]
[MaxLength(200, ErrorMessage = "{0} نمی تواند بیشتر از {1} کاراکتر باشد .")]
[Required(ErrorMessage = "لطفا {0} را وارد کنید")]
public string CompanyProductShortDesc { get; set; }
[Display(Name = "تعداد بازدید")]
public int CompanyProductViewCount { get; set; }
#region Relations
[ForeignKey("CompanyProductGroupId")]
public CompanyProductGroup CompanyProductGroup { get; set; }
[ForeignKey("SubGroupId")]
public CompanyProductGroup Group { get; set; }
#endregion
Услуги:
public List<CompanyProductGroup> GetPorductGroupById(int id)
{
return _context.CompanyProductGroups.Include(d => d.CompanyProduct)
.Where(c => c.CompanyProductGroupId == id && c.IsDelete == false || c.ParentId == id).ToList();
}
Контроллер:
[Route("group/{title}/{id}")]
public IActionResult Group(string title, int id)
{
ViewBag.PageId = id;
return View(_companyService.GetPorductGroupById(id));
}
Просмотр с проблемой:
@foreach (var head in Model.Where(c => c.CompanyProductGroupId == ViewBag.PageId && c.ParentId == null))
{
<div class="section-title2">
<h2>@head.CompanyProductGroupTitle</h2>
<br />
<p>@head.CompanyProductGroupDes </p>
</div>
@foreach (var gr in head.CompanyProduct.Where(d => d.CompanyProductGroupId == head.CompanyProductGroupId)){<div class="wid-50">
<img src="~/companyproduct/image/gr.CompanyProducGtPic" />
<div class="wid-50-content">
<h2>gr.CompanyProductTitle</h2>
<p>
gr.CompanyProductShortDesc
</p>
<a href="#">بیشتر</a>
</div>
</div>
}
}
Дело в том, что нет ошибки :(
Когда я использую foreach с идентификатором основной группы, это работает, это код:
@foreach (var head in Model.Where(c => c.CompanyProductGroupId == ViewBag.PageId && c.ParentId == null))
{
<div class="section-title2">
<h2>head.CompanyProductGroupTitle</h2>
<br />
<p>head.CompanyProductGroupDes </p>
</div>
@foreach (var gr in head.CompanyProduct.Where(d => d.CompanyProductGroupId == head.CompanyProductGroupId))
{
<div class="wid-50">
<img src="~/companyproduct/image/@gr.CompanyProducGtPic" />
<div class="wid-50-content">
<h2>@gr.CompanyProductTitle</h2>
<p>
@gr.CompanyProductShortDesc
</p>
<a href="#">بیشتر</a>
</div>
</div>
}
}