.net mvc 5从视图中的元组集合中获取X元素

时间:2015-08-10 19:15:14

标签: asp.net-mvc

问候每个人
我有模型视图,其中包含我在主控制器中初始化的方法集合,但是当我尝试在不使用foreach的情况下获取X元素时它不起作用,我在视图中尝试了这个

@Html.Display(Model.Intel.where(x => x.Item2.Equals("Test"))

但没有任何表现。如果有人有想法我会对它持开放态度。
IntelCollection<Tuple<string, string>>

的类型

2 个答案:

答案 0 :(得分:0)

如果Model.Intel是一个集合,并且您希望将单个字符串项传递给@ Html.Display,那么您需要返回一个字符串。

Model.Intel.Where([predicate]) 

返回IQueryable

尝试这样的方法来获取项目,然后寻址一个属性或者去上面的ToString():

Model.Intel.Where(x => x.Item2.Equals("Test")).Single()

OR

Model.Intel.Where(x => x.Item2.Equals("Test")).Single().StringPropertyOfSingleObject

答案 1 :(得分:0)

你真的不需要使用Display ..除非你想创建一个显示模板来显示值..只需将值添加到你的视图

@Model.Intel.Where(a => a.Item2 == "Test")
      .Select(a => string.Format("({0}, {1})",a.Item1, a.Item2))
      .Aggregate((i, j) => i + ", " + j)

假设您可能有两个Item2 =&#34; Test&#34;,这会输出类似

的内容
(1 - Test), (2 - Test)

您还可以更改string.Format以将输出包装在html标记中。只需确保使用@ Html.Raw()来显示它。

<ul>
    @Html.Raw(Model.Intel.Where(a => a.Item2 == "Test")
                   .Select(a => string.Format("<li>{0} - {1}</li>",a.Item1, a.Item2))
                   .Aggregate((i, j) => i + "" + j))
</ul>

会输出

  • 1 - 测试
  • 2 - 测试