【问题标题】:ASP.NET IEnumerable viewASP.NET IEnumerable 视图
【发布时间】:2013-04-02 16:24:49
【问题描述】:

我有一个 IEnumerable 视图,它返回一个备注列表,但我还有一个菜单,该菜单有一个链接,其中包含一个链接到备注的不同实体的学生编号,这很难解释,所以我会发布我的代码

<a href="@Url.Content("~/StudentGegevens/index/"+ Model.LRL_NR)" class="buttonStudentGegevens"><img src="../../images/ViewAccount.png"/> Student gegevens </a>
<a href="@Url.Content("~/StudentGegevens/MedischeInformatie/" +@Model.LRL_NR)" class="buttonMedischeInformatie"><img src="../../images/ViewMedischeInfo.png"/> Medische informatie </a>
<a href="@Url.Content("~/StudentGegevens/BijlageenCommentaar/" +@Model.LRL_NR)" class="buttonBijlagenCommentaar"><img src="../../images/ViewBijlage.png"/> Bijlage en commentaar </a>

foreach(var item in Model) 不起作用,因为我只希望菜单显示一次。

正如您在此处看到的,我将学生编号提供给带有@Model.LRL_NR 的链接,但是对于IEnumerable 视图,您不能使用@Model.LRL_NR,有什么办法可以将@Model.LRL_NR 与@ 一起使用987654328@查看?

【问题讨论】:

  • 什么样的IEnumerable?你不是用通用的吗?如果您使用的是集合,则应该对其进行迭代,不是吗?
  • @model IEnumerable,如果我能够迭代它,我该怎么做?

标签: asp.net-mvc ienumerable


【解决方案1】:

遍历您的 IEnumerable 并为其中的每个项目写出链接:

@foreach(var item in Model)
{
     <a href="@Url.Content("~/StudentGegevens/index/"+ item.LRL_NR)" class="buttonStudentGegevens"><img src="../../images/ViewAccount.png"/> Student gegevens </a>
     <a href="@Url.Content("~/StudentGegevens/MedischeInformatie/" +@item.LRL_NR)" class="buttonMedischeInformatie"><img src="../../images/ViewMedischeInfo.png"/> Medische informatie </a>
     <a href="@Url.Content("~/StudentGegevens/BijlageenCommentaar/" +@item.LRL_NR)" class="buttonBijlagenCommentaar"><img src="../../images/ViewBijlage.png"/> Bijlage en commentaar </a>
}

根据您的描述,您需要同时访问LRL_NRREMARK 的列表。

一种方法是创建一个封装它们的类,并将其用作Model

public class RemarksModel
{
   public int LRL_NR { get; set }
   public IEnumerable<PvBempty.REMARK> Remarks { get; set }
}

这将允许您这样做:

<a href="@Url.Content("~/StudentGegevens/index/"+ Model.LRL_NR)" class="buttonStudentGegevens"><img src="../../images/ViewAccount.png"/> Student gegevens </a>
<a href="@Url.Content("~/StudentGegevens/MedischeInformatie/" +@Model.LRL_NR)" class="buttonMedischeInformatie"><img src="../../images/ViewMedischeInfo.png"/> Medische informatie </a>
<a href="@Url.Content("~/StudentGegevens/BijlageenCommentaar/" +@Model.LRL_NR)" class="buttonBijlagenCommentaar"><img src="../../images/ViewBijlage.png"/> Bijlage en commentaar </a>

foreach(var item in Model.Remarks)
{
    // each item is a PvBempty.REMARK
}

【讨论】:

  • 是的,但如果我这样做,我会显示模型中每个项目的菜单,我只想显示一次菜单。在菜单下方,我有一个学生列表(带有数据表)
  • @user1841216 - 那么你的模型不应该使用IEnumerable&lt;PvBempty.STUDENT&gt;,而是PvBempty.STUDENT。如果您只有一个要显示的项目,为什么要使用集合?
  • 因为在菜单下面我有一个数据表中的学生列表,这个问题可以用局部视图解决吗?
  • @user1841216 - 好的。但是LRL_NR 是从哪里来的呢? PvBempty.STUDENT 列表中的每个项目是否相同?考虑创建一个包含此项PvBempty.STUDENT 列表的类。这将使您可以直接访问该属性。
  • 这对我来说似乎是正确的答案。也许简单的解决方法是在您的模型中获取 Student 的第一个实例? (Model.SingleOrDefault() 中的变量项)(使用相同的@foreach 逻辑)
猜你喜欢
  • 1970-01-01
  • 2011-10-05
  • 1970-01-01
  • 2020-03-16
  • 1970-01-01
  • 1970-01-01
  • 2017-07-27
  • 1970-01-01
  • 2013-02-23
相关资源
最近更新 更多