C# Razor MVC从模型中获取单个项目

C# Razor MVC从模型中获取单个项目,c#,razor,model-view-controller,partial-views,C#,Razor,Model View Controller,Partial Views,我对Razor/MVC非常陌生,所以我有一个非常基本的问题 我知道我可以在局部视图中循环浏览模型 @foreach (var e in Model.Modelname) { e.ModelProperty } 我想做的不是像上面那样遍历模型中的所有项目,而是从模型中获取一个(或者如果有多个项目,则获取第一个)项目 我意识到我可以这样写: @foreach (var e in Model.Modelname) { e.ModelProp.First() } 然而,为了从一个模型

我对Razor/MVC非常陌生,所以我有一个非常基本的问题

我知道我可以在局部视图中循环浏览模型

@foreach (var e in Model.Modelname)
{
    e.ModelProperty
}
我想做的不是像上面那样遍历模型中的所有项目,而是从模型中获取一个(或者如果有多个项目,则获取第一个)项目

我意识到我可以这样写:

@foreach (var e in Model.Modelname)
{
    e.ModelProp.First()
}
然而,为了从一个模型中得到一个项目而不得不写一个循环似乎很愚蠢。在别人说你为什么不直接写呢

      e.ModelProp 
因为很多时候,我需要在一个模型中获得属性,在两次编写之间,我会得到一组完全不同的属性(通常更全面)

 Model.ItemProp    

 or

  foreach (var e in Model.Modelname)
  {
      e.ItemProp
  }
所以我想我真正想问的是,我如何获得那些单独的属性,就像我在Model.Modelname中使用var e可以获得的那样,而不必在模型中循环

我试过像这样的东西

var e = Model.Modelname;

e.ModelProp
但很明显,这是行不通的


谢谢

看起来您正在尝试从Modelname获取Modelname的第一项,然后从Modelname获取该第一项的第一个属性:

Model.Modelname.First().ModelProp.First()
如果只需要Modelname中的第一个对象,然后是特定属性:

Model.Modelname.First().ModelProp
很少增加。列表可能为空,请添加空检查:

Model.Modelname.FirstOrDefault()?.ModelProp ?? ""

如果要获取ModelProp的所有第一项,则

Model.Modelname.Select(x=> x.ModelProp.FirstOrDefault())
如果要获取第一个ModelName的第一个ModelProp:

Model.Modelname.FirstOrDefault(x=> x.ModelProp.FirstOrDefault())

如果您能够提供一个具有真实类和真实属性名称的应用程序,那将是非常棒的。您试图使其更通用,这就更难回答了。这完全取决于您在控制器中传递给视图的对象。(即,
模型
是什么类型?)不应将对象的
可枚举
传递给控制器(在视图模型中),而应返回要表示的对象。那么就没有什么可以循环了。对不起,我应该写一个更完整的例子。我一直坚持这个概念,但你是对的,一个真实世界的例子可能会更有帮助。就这么简单,是吗?该死,我的错。哈哈。虽然有时(实际上很多时候),当我尝试使用.First()时,我会看到红色的曲线。。。是否需要在控制器中设置一些东西才能使用First?@Nick No。它只是普通的C。它是一个扩展方法,因此必须在要使用它的类中导入适当的名称空间(本例中为System.Linq)。