Обычно я работаю в Классике 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
цикл.
Все ответы и помощь ценятся.
Если вы используете механизм представления 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) %>