Есть ли хороший способ создать визуализации чистого листа для страницы в ASP.Net MVC? - PullRequest
0 голосов
/ 29 июня 2010

У меня есть страница индекса, на которой показан постраничный список данных из базы данных.Когда этот список пуст, я хочу показать «пустой лист», который четко указывает пользователю, где он находится и что он может там делать: «Вы можете добавить новый элемент, нажав здесь».

Есть ли лучший / более чистый способ сделать это, чем просто использовать большое выражение if на всей странице?

<% if (Model.Items.Count > 0) { %>
       normal view 
<% } 
   else { %> 
       blank slate view 
<% } %>

Ответы [ 3 ]

2 голосов
/ 29 июня 2010

Хорошие предложения от Бенджамина Андерсона.Кроме того, многие хотят заглянуть в сетку 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'>") %>
0 голосов
/ 30 июня 2010

Как насчет следующего HtmlHelper, где viewName - это имя частичного представления.Это не совсем то, что вы после, но может обеспечить начало.Я хотел бы учесть, что, если у вас есть заданный список действий, которые можно выполнить в случае пустого списка, вы можете создать частичные представления, отражающие это.Возможно один для каждого контроллера, но названный тем же самым и может заменить аргумент "NoResultsView".

В зависимости от того, используете ли вы ViewModels в своем проекте - вы можете создать соглашение об именовании для представлений типа результата, и это может дополнительно устранить необходимость в аргументе viewName

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
}
0 голосов
/ 29 июня 2010

Помимо перенаправления в другое представление в контроллере или использования другого механизма представления, это лучший способ.

Несколько чище - использовать частичное представление для сетки и подкачки,но у вас все равно будет предложение If в середине представления.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...