【问题标题】:Tree View MVC Not being populated properly树视图 MVC 未正确填充
【发布时间】:2021-11-19 03:19:21
【问题描述】:

我正在尝试创建一个树形视图菜单,但它无法正常工作。有 3 个不同的存储过程,第一个用于家庭(父),第二个用于类别(子),第三个用于报告(孙)。 Families SP 将用户 ID 作为参数,似乎工作正常。 Category SP 采用 userID 和 familyID,第 3 个采用 userID、FamilyID 和 CategoryID。运行代码时,它会显示族,并在下方显示 1 报告名称。如果我从 foreach 循环中删除调用存储过程的代码行,它会返回 1 个系列的类别,尽管它显示在所有系列上。

如果我在控制器上添加断点,它将通过循环并返回正确的数据,所以我认为问题在于它的显示方式。[显示的数据]在这个屏幕截图上可以看到如何正在显示数据,正在从家庭 SP 和 WebBooking 重新调整 EPOS 和 RES,这是一个类别

FAMILIES
¦
¦--CATEGORIES
   ¦
   ¦
   ¦---REPORT_NAME

提前谢谢!

在控制器上,我正在调用每个存储过程,如果使用断点进行测试,所有应该返回的数据都将正确返回。也许我的问题的解决方案是使用控制器返回的数据填充视图,但是我不知道该怎么做?

控制器

       foreach (var cat in model.familiesReport = context.P_Mob_Get_ReportFamilies(user).ToList()) 
             {
                Console.WriteLine(cat.FamilyName);
                foreach (var name in model.CategoriesReport = context.P_Mob_Get_ReportCategories(user, cat.FamilyID).ToList())
                {
                    Console.WriteLine(name.Category);

                    foreach (var test in model.namesReport = context.P_Mob_Get_ReportNames(user, cat.FamilyID, name.CategoryID).ToList())
                    {
                        Console.WriteLine(test.ReportName);
                        
                    }
                    
                 }
           
            



我有一个具有 3 个 SP_Results(EF 中的复杂类型)的视图模型。在视图中,我将遍历每一个复杂类型并返回每个类型的名称(家庭、类别、名称)

查看

        <ul>
            @foreach (var family in Model.familiesReport)
            {
                <a href="#" class="menu_fam">@family.FamilyName</a>
            
                <ul class="">
                    @foreach (var cat in Model.CategoriesReport)
                    {
                        <li href="#" class=""><a class="menu_cat"> @cat.Category</a></li>
                    

                        <ul class="">
                            @foreach (var name in Model.namesReport)
                            {

                                <li href="#" class=""><a class="menu_name">   @name.ReportName</a></li>
                            }


                        </ul>
                    }
                </ul>
            }
        </ul>
      

【问题讨论】:

  • 您确实需要缩小问题范围。是存储过程/数据问题还是网络渲染问题?你实际上并没有在这里说明这个问题。请缩小问题范围并编辑您的问题并说明问题。事实上,这太宽泛了,无法提供帮助。
  • 我刚刚编辑了这个问题。道歉
  • 目前还不清楚。你期望看到什么?你得到什么?家庭/类别/报告树上的不同级别?您需要分析数据,直到您可以说“确实按预期工作”而不是说“似乎工作正常”,我建议您删除链接的图片并显示您所期望的文本表示,以及您所看到的。
  • 在您的示例图片中,报告似乎没有按照您的预期出现。首先确认您的视图代码中正在运行一行以呈现报表行。如果在页面上看不到,请右键单击网页并按inspect 并在 html 中挖掘,看看是否可以找到您的报告元素

标签: entity-framework model-view-controller


【解决方案1】:

我终于找到了解决方案。我创建了一个新模型,而不是将存储过程的结果保存在 EF 生成的复杂类型中,而是将它们保存在这个模型中。模型中的每个类都有一个保存数据的列表。如下图所示。 型号:

 public class FamilyResultResponse
{
    public List<Family> Families { get; set; }
    public List<Sites> SitesGet { get; set; }
}

public class Family
{

    public Nullable<int> FamilyID { get; set; }
    public string FamilyName { get; set; }

    public List<FamilyResultCat> FamilyCat { get; set; }


}
public class FamilyResultCat
{
    public Nullable<int> familyid { get; set; }
    public Nullable<int> CategoryID { get; set; }
    public string Category { get; set; }
    public int Allowed { get; set; }

    public List<FamilyResulReportByCategory> FamilCatRep { get; set; }

}

public class FamilyResulReportByCategory
{

    public Nullable<int> ReportID { get; set; }
    public Nullable<int> categoryid { get; set; }
    public string ReportName { get; set; }


}

控制器: 遍历列表

        public ActionResult Index(Guid? userID\)
    {

        
        var model = new FamilyResultResponse();
        model.Families=new List<Family>();
        SPMenuModel modelSPMEnu = new SPMenuModel();
     


        foreach (var f in context.P_Mob_Get_ReportFamilies(userID).ToList())
        {
            var fam = new Family();
            fam.FamilyID = f.FamilyID;
            fam.FamilyName= f.FamilyName;
            fam.FamilyCat = new List<FamilyResultCat>();

            Console.WriteLine(f.FamilyName);
            foreach (var c in  context.P_Mob_Get_ReportCategories(userID, f.FamilyID).ToList())
            {
                var famcat = new FamilyResultCat();
                famcat.CategoryID = c.CategoryID;
                famcat.Category = c.Category;
                famcat.Allowed = c.Allowed;
                famcat.FamilCatRep= new List<FamilyResulReportByCategory>();

                Console.WriteLine(c.Category);
                foreach (var n in context.P_Mob_Get_ReportNames(userID, f.FamilyID, c.CategoryID).ToList())
                {
                    var famcatrep = new FamilyResulReportByCategory();
                    famcatrep.ReportID = n.ReportID;
                    famcatrep.ReportName = n.ReportName;
                    famcatrep.categoryid = n.categoryid;
                    Console.WriteLine(n.ReportName);
                    famcat.FamilCatRep.Add(famcatrep);
                }
                fam.FamilyCat.Add(famcat);
            }
            model.Families.Add(fam);

        }
      


        modelSPMEnu.familyResult = model;


        return View(model);

查看

            @foreach (var fam in Model.Families)
        {
            <a href="#" class="menu_fam"> @fam.FamilyName</a>

            <ul class="">
                @foreach (var cat in fam.FamilyCat)

                {

                    <li href="#" class=""><a class="menu_cat"> @cat.Category </a></li>
                    foreach (var name in cat.FamilCatRep)
                    {
                        <ul class="">
                            <li class=""><a>@name.ReportName</a></li>
                        </ul>
                    }
                }


            </ul>

        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2014-11-01
    • 1970-01-01
    相关资源
    最近更新 更多