首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >C# MVC强类型视图与ViewModel

C# MVC强类型视图与ViewModel
EN

Stack Overflow用户
提问于 2014-12-02 21:47:40
回答 3查看 229关注 0票数 0

我有一个名为ViewModel的MyViewModel,它包含:

代码语言:javascript
复制
public IList<Config> Config { get; set; }
public bool Disabled { get; set; }
public string Name { get; set; }

Config是一个包含ID & Value的对象。

在Controller方面,我正在填充所有的值,在视图中,我需要访问这个Config单个项的列表,其中id = x和它应该在label中显示相应的值。为此,我需要一个强类型的标签,大致如下所示:

代码语言:javascript
复制
@Html.LabelFor(a => ....)

我不确定我的Linq语句应该是什么来在label Config.Id = x中显示Config.Id = x。任何帮助都将不胜感激。谢谢

EN

回答 3

Stack Overflow用户

发布于 2014-12-02 21:52:43

若要显示按ID值分组的表,请首先创建所有现有Id编号的列表。

代码语言:javascript
复制
ViewBag.Ids = Config.Select(x => x.Id).Distinct(); //create list of all existing Ids

通过ViewBag将该列表传递到您的视图中,并遍历它以及对象列表:

代码语言:javascript
复制
@foreach(int IdNum in ViewBag.Ids)
{
    <table>
    @foreach(Config c in Config.Where(x=> x.Id == IdNum))
    {
        <tr>  
          <td> @c.ID </td>
          <td> @c.property1 </td>
          <td> @c.property2 </td>
        </tr>
    }
    </table>
}

在这种情况下,我不会费心使用LabelFor()方法,因为只使用@object.property与HTML内联就足够容易了。

票数 1
EN

Stack Overflow用户

发布于 2014-12-02 22:32:30

若要按组显示列表,请尝试如下

代码语言:javascript
复制
<table>
     @{

      foreach (var group in Model.Config.GroupBy(x => x.Id))
      {
    <tr>  
      <td>@group.Key</td> </tr>
      int index =0;
@foreach(Config c in Model.Config.Where(x=> x.Id == group.Key))
{
    <tr>  
      <td> @Model.Config[index].ID </td>
      <td> @Model.Config[index].property1 </td>
      <td> @Model.Config[index].property2 </td>
    </tr>
index++;
}

      }
    }
</table>
票数 0
EN

Stack Overflow用户

发布于 2014-12-03 12:31:07

睡过几次觉后,我终于得到了它。这就是我要找的:

代码语言:javascript
复制
@Html.Label(Model.Config.FirstOrDefault(x => x.ConfigId == "x").Value)

但是,由于某些原因,它不能在@Html.Display上工作。知道为什么吗?谢谢大家的意见和建议。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27259612

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档