代码之家  ›  专栏  ›  技术社区  ›  Max Schmeling

在ASP.NETMVC中,有没有一个好的方法来创建一个页面的呈现白板?

  •  0
  • Max Schmeling  · 技术社区  · 14 年前

    有没有比在整个页面上放一个大if语句更好/更干净的方法呢?

    <% if (Model.Items.Count > 0) { %>
           normal view 
    <% } 
       else { %> 
           blank slate view 
    <% } %>
    
    3 回复  |  直到 14 年前
        1
  •  0
  •   Benjamin Anderson    14 年前

    除了重定向到控制器中的不同视图,或者使用不同的视图引擎之外,这是最好的方法。

        2
  •  2
  •   Raj Kaimal    14 年前

    本杰明安德森的好建议。此外,您还需要查看MVCContrib网格(请参见.Empty方法)

    http://www.jeremyskinner.co.uk/2009/02/22/rewriting-the-mvccontrib-grid-part-2-new-syntax/

    <%= Html.Grid(Model.People).Columns(column => {
                column.For(x => x.Id).Named("Person ID");
                column.For(x => x.Name);
                column.For(x => x.DateOfBirth).Format("{0:d}");
            })
            .Attributes(style => "width:100%")
            .Empty("There are no people.")
            .RowStart(row => "<tr foo='bar'>") %>
    
        3
  •  0
  •   Ahmad    14 年前

    下面的HtmlHelper怎么样 viewName 是局部视图的名称。这并不完全是你所追求的,但可以提供一个开始。我要考虑的是,假设您有一个可以在空列表的情况下执行的操作的集合列表,您可以创建反映这一点的局部视图。每个控制器可能有一个,但名称相同,可以替换“NoResultsView”参数。

    视图名称 论点

    public static MvcHtmlString ResultsView<TModel> (this HtmlHelper helper, IList<TModel> items, string viewName) where TMdodel: class
    {
        if (items.Count() != 0)
        { 
            return System.Web.Mvc.PartialExtensions.Partial(helper, viewName, items);
        }
    }
        return return System.Web.Mvc.PartialExtensions.Partial(helper, "NoResultsView", items); // View is Shared
    }