【问题标题】:ASP.NET MVC - Is partial view the right place to check if model is null or empty?ASP.NET MVC - 部分视图是检查模型是空还是空的正确位置吗?
【发布时间】:2011-01-21 13:12:59
【问题描述】:

我有以下局部看法:

@model IEnumerable<Foo>

<div id="foo">
    @foreach (var foo in Model)
    {
        ...
    }
</div>

如果集合为空或为空,我想显示一些用户友好的消息,否则我想列出所有集合项。 Shell 我在局部视图中还是在调用方法中进行检查?在这种情况下,最佳做法是什么?为什么?

谢谢!

【问题讨论】:

    标签: asp.net-mvc razor partial-views


    【解决方案1】:

    是的,局部视图是正确的位置 - 使用局部视图的原因是您的页面只需要视图名称和对集合的引用。如果您将 IsEmpty 逻辑添加到顶级页面,则会丢失该封装。

    【讨论】:

      【解决方案2】:

      我不是 100% 熟悉 Razor 语法,但我会为此创建 UI 助手。为了保持 View 简单,我使用以下“规则”:如果我得到 if 语句或循环,那么我将创建 UI 助手。

      我有每个上下文的静态类。假设我有一家音乐商店.. 那么我会有一个名为 AlbumHelper 的课程

      public static class AlbumHelper : {possible inheritance\
      {
          public static string CreateAlbumList(Model model)
          {
              // TODO: create list here using technique you prefer
              // <ul><li>empty</li></ul>
              return string.Empty;
          }
      }
      

      我会调用 using(记得将命名空间添加到您的 Web.config):

      <%= AlbumHelper.CreateAlbumList(Model) %>
      

      如果是常用的control,那么我会创建扩展,这样就可以使用这一行来创建。

      <%= Html.AlbumList(Model) %>
      

      Here is a link 创建扩展的简短教程

      【讨论】:

      • 这不能回答问题。
      • 与 Razor 有点不同 - 助手看起来很像局部视图,可以在本地定义。此外,更简洁的语法意味着将帮助程序编写为 cshtml 更有意义,它将被转换为类似于您的示例的代码。
      • @Tom Clarkson 好的,我会理解的。我的回答仅适用于“传统”视图引擎
      猜你喜欢
      • 2011-05-04
      • 2023-02-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      • 1970-01-01
      • 2016-05-10
      相关资源
      最近更新 更多