Как лучше всего отображать массу значений в представлении, но если у каждого нет значения, чтобы оно не занимало пространство страницы - PullRequest
1 голос
/ 12 октября 2011

Я пробовал

<%: Html.DisplayFor(m => m.Overall) %> 
<%: Model.Overall %> 

, и ни одна из них не работает, и, возможно, в настоящее время возможны только идеи о том, чтобы сделать, если отчеты по самому представлению, что если он был нулевым, не отображались, но у меня более 200 значениймоя трудоемкая и бесполезная, другая идея заключалась в том, чтобы сделать то же самое, но в jquery document.ready заявлениях if.

есть ли у кого-нибудь какие-нибудь простые идеи или решения css, которые могли бы предотвратить массу пустого пространства.

ТНХ

Ответы [ 3 ]

1 голос
/ 12 октября 2011

В этом случае я бы использовал пользовательские Шаблоны отображения . Это оставит ваш взгляд очень чистым, и ваше предложение if / else в одном месте. Ваши шаблоны отображения будут выглядеть примерно так (CheckEmpty.ascx):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<String>" %>
<%= String.IsNullOrEmpty(Model) ? String.Empty : Model %>

Тогда у вас есть два варианта, где указать шаблон отображения. На ваш взгляд:

<%: Html.DisplayFor(m => m.Overall, "CheckEmpty") %> 

или используя аннотации данных в вашей модели:

 //model
 [UIHint("CheckEmpty")]
 String Overall {get; set;}

 <%-- View --%>
 <%-- Don't need to specify template, since UIHint already specifies --%>
 <%: Html.DisplayFor(m => m.Overall) %>
1 голос
/ 12 октября 2011

Если вы используете MVC 3 с использованием шаблонов отображения, вы можете создать цикл над свойствами. Итак, аналогично другому ответу, создайте шаблон отображения для NotEmptyProperties.ascx и в своей странице вызовите:

<%: Html.DisplayForModel("NotEmptyProperties") %>

А потом в шаблоне дисплея:

foreach(var p in ViewData.ModelMetadata.Properties)
{
    if(ViewData.Eval(p.PropertyName) != null)
    {
        <%: Html.Display(p.PropertyName) %>
    }
}

Метод Eval в ViewDataDictionary позволит вам проверить свойства в цикле на ноль и отобразить только те, которые не равны нулю.

0 голосов
/ 12 октября 2011

Вы пробовали что-то вроде ниже:

<% if(Model != null) { %>

    <%: Html.DisplayFor(m => m.Overall) %> 

<% } %>
...