如何在Razor语法中对视图模型项目进行排序

3
我正在遍历Model.Images并显示缩略图库。我希望“主”图像始终首先显示在页面上。 “主”图像是我在对象Image中设置的标志/属性。它被称为IsMain,是一个布尔值。我不确定如何在代码后台或在Razor页面中对其进行排序,以便具有属性IsMain设置为true的图像始终显示在第一位。
这里是我显示所有图像的位置。
<ul id="sortable">
  @foreach (var image in Model.Images) {
  <li class="col-sm-6 col-md-4">

    <div class="thumbnail">
      <a class="close" href="#">×</a>
      @{ var base64 = Convert.ToBase64String(image.ImageThumbnail); var thumbSrc = String.Format("data:image/gif;base64,{0}", base64); var base64Modal = Convert.ToBase64String(image.Image); var imgSrcModal = String.Format("data:image/gif;base64,{0}", base64Modal);
      var imageId = "pop" + image.YogaSpaceImageId; var imagesourceId = "imagesource" + image.YogaSpaceImageId; }
      <a class="image" id="@imageId" href="" data-toggle="modal" data-target="#myModal">
        <img id="@imagesourceId" src="@thumbSrc" data-imagesrc="@imgSrcModal" alt="image not found" width="203" height="136" />
      </a>
      <div class="caption">
        <h3>Thumbnail label</h3>
        <p>...</p>
        <p><a href="#" class="btn btn-primary" role="button">Button</a>  <a href="#" class="btn btn-default" role="button">Button</a>
        </p>
      </div>
    </div>

  </li>
  }
</ul>
1个回答

6
假设Model.Images是一个List<Image>,那么
images = Model.Images.OrderBy(i => i.IsMain).ToList();  // I think I got the syntax right, may have to check that.

应该这样做。

这可以在控制器或视图中完成,取决于您的架构哪种更合适。


model.images 是一个 ICollection<images> - user1186050
那么,一个集合的集合?还是你的命名方式只是奇怪而已?无论哪种情况,我相信 LINQ 定义了 ICollection<T>OrderBy 扩展方法。 - Sam Axe

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接