Я пытаюсь сделать цикл по foreach, но он не работает - PullRequest
0 голосов
/ 05 июня 2019

Я пытаюсь показать продукты, которые имеют 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>
    }
}
...