Не отображают/пишут определенный HTML, если model.entity является пустым

Обычно я работаю в Классике ASP, и является все еще немного зеленым на ASP.NET MVC.

У меня есть своя модель с ее полями, или объекты (не могло бы быть правильное слово следовательно, почему не способный найти, если ранее отвечено, простите мне), и некоторые из них будут иметь нулевые значения, такие как гиперссылки, адрес электронной почты, определенные типы номеров телефона, и т.д.

То, что я хочу сделать, не является записью определенные блоки HTML в foreach цикл, если поле пусто.

В Классике ASP я записал бы If оператор вроде:

<% If RS.field <> NULL then %>HTML with <%=RS.field %><% End If %>
<% If RS.field2 <> NULL then %>HTML with <%=RS.field2 %><% End If %>
...

Однако я не знаю, как достигнуть того же результата в ASP.NET MVC.

В одном из моих текущих использований, списке продавцов, возвращенных для определенного набора результатов поиска, это пробегает a foreach цикл и возвраты текущий HTML (частично):

Website: <a class="url" href="<%= seller.ContactWebsite %>" target="_blank" title="Visit the website for  <%= seller.Name %>"><%= seller.ContactWebsite %></a><br />

Так, если, например, я имею поле из модели, говорю seller.ContactWebsite, и это поле было ПУСТЫМ, я не захочу, чтобы оно записало это как часть foreach цикл.

Все ответы и помощь ценятся.

1
задан DaveRandom 25 February 2013 в 23:15
поделиться

1 ответ

Если вы используете механизм представления WebForms с C #, вот как может выглядеть ваш код:

<% if (!string.IsNullOrEmpty(Model.field1)) { %>
    HTML with <%= Model.field1 %>
<% } %>

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

Как видите, этот синтаксис быстро превращается в суп из тегов, поскольку смешивать разметку с серверным кодом некрасиво. Чтобы решить эту проблему, вы можете написать собственный вспомогательный метод HTML , который будет отвечать за правильное форматирование.

Возьмем, к примеру, этот фрагмент:

<a class="url" href="<%= seller.ContactWebsite %>" target="_blank" title="Visit the website for  <%= seller.Name %>"><%= seller.ContactWebsite %></a>

Вот как может выглядеть потенциальный вспомогательный метод:

public static MvcHtmlString MyCustomLink(this HtmlHelper htmlHelper, SellerViewModel seller)
{
    if (seller == null)
    {
        return MvcHtmlString.Empty;
    }
    var anchor = new TagBuilder("a");
    anchor.AddCssClass("url");
    anchor.MergeAttribute("href", seller.ContactWebsite);
    anchor.MergeAttribute("target", "_blank");
    anchor.MergeAttribute("title", "Visit the website for " + seller.Name);
    anchor.SetInnerText(seller.ContactWebsite);
    return MvcHtmlString.Create(anchor.ToString());
}

, который можно использовать в цикле for следующим образом:

<%= Html.MyCustomLink(seller) %>
2
ответ дан 2 September 2019 в 23:27
поделиться
Другие вопросы по тегам:

Похожие вопросы: