【问题标题】:How to return records in a view based off of a selected Item's data如何根据所选项目的数据在视图中返回记录
【发布时间】:2019-04-07 00:17:05
【问题描述】:

我正在为一个小动物饲养员创建一个 asp.net MVC 应用程序。我用一个名为 AvailableAnimals 的表设置了数据库,该表与 MaleBreeder 表和 FemaleBreeder 表具有一对多的关系。我想通过使用选定的可用动物 ID 创建一个“兄弟姐妹”页面,并能够查看该动物的所有全兄弟姐妹和半兄弟姐妹。到目前为止,这是我所拥有的,但 Siblings 视图没有返回任何内容。

答案是我确定是一个我现在想不出的简单问题。

控制器:

    public ActionResult Siblings(int? id)
    {

        AvailableAnimals availableAnimals = db.AvailableAnimals.Find(id);
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        else if (id != null)
        {

            var siblings = db.AvailableAnimals.Where(x => x.ACSireID == id.Value || x.ACDamID == id.Value);
            return View(siblings);
        }

        if (availableAnimals == null)
        {
            return HttpNotFound();
        }
        return View(availableAnimals);
    }

我的视图目前仅设置为显示来自简单 foreach 循环的兄弟姐妹。

【问题讨论】:

  • 你调试代码了吗?您在availableAnimalssiblings 变量中获得了什么数据?
  • availableAnimals 是我从中提取记录的表。该表包含 ACSIREID 和 ACDAMID 的数据。我有一个单独的公牛表和一个单独的水坝表。因此,它们与可用的动物具有一对多的关系。我现在只是将兄弟姐妹作为变量。
  • 你的代码看起来不错。您没有在视图中获取数据的可能原因是因为您没有在 siblings 变量中获取任何数据。您需要调试代码并检查是否在 siblings 变量中获取任何数据。您还需要检查数据库中是否有正确的数据。您只能调试您的代码。我们可以提示您在哪里寻找问题。我们无法解决问题,因为我们不知道问题是什么。
  • 所以我的变量“兄弟姐妹”唯一返回的是 System.Collections.Generic.List`1[SolutionName.AvailableAnimals]

标签: c# asp.net-mvc entity-framework view controller


【解决方案1】:

我想通了.....

它只是引入了那只动物的 ID,并将母亲和父亲的 ID 与那个进行比较。这就是最终的工作......

public ActionResult Siblings(int?id) {

    AvailableAnimals availableAnimals = db.AvailableAnimals.Find(id);
    if (id == null)
    {
        return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
    }
    else if (id != null)
    {

        var siblings = db.AvailableAnimals.Where(x => x.ACSireID == availableAnimals.ACSireID || x.ACDamID == availableAnimals.ACDamID).Include(x => x.FemaleBreederAnimals).Include(x => x.MaleBreederAnimals);
        return View(siblings);
    }

    if (availableAnimals == null)
    {
        return HttpNotFound();
    }
    return View(availableAnimals);
}

感谢大家的帮助!

【讨论】:

    【解决方案2】:
    public ActionResult Siblings(int? id)
    {
    
        AvailableAnimals availableAnimals = db.AvailableAnimals.Find(id);
        if (id == null)
        {
            return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
        }
        else if (id != null)
        {
    
            List<AvailableAnimals> siblings = db.AvailableAnimals.Where(x => x.ACSireID == id || x.ACDamID == id).ToList();
            return View(siblings);
        }
    
        if (availableAnimals == null)
        {
            return HttpNotFound();
        }
        return View(availableAnimals);
    }
    

    检查您的 AvailableAnimals 表必须计数 > 0,然后您才能使用 foreach 循环解析数据,您的视图看起来像这样

    @model List<SolutionName.ModelName.AvailableAnimals>
    @foreach (var item in Model)
    {
    }
    

    【讨论】:

    • 这看起来很有希望。我很感激,我会试一试! :)
    • 实施后没有任何改变。但是,我确实发现,我从兄弟变量中得到的唯一结果是 System.Collections.Generic.List`1[SolutionName.AvailableAnimals]。
    猜你喜欢
    • 2023-03-06
    • 2015-02-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    相关资源
    最近更新 更多