оператор if для отображения ссылки html.action в представлении - PullRequest
0 голосов
/ 23 декабря 2010

У меня есть вид, который отображает список комментариев. Теперь с комментарием может быть связан документ, так как я показываю каждый комментарий, мне нужно проверить, имеет ли значение «AttachedDocumentID» и, если да, отобразить HTML.ActionLink к нему.

Не уверен, что это лучший способ сделать это, чтобы избежать использования оператора if в представлении (что, как мне кажется, является плохой формой), и я не хотел, чтобы какой-либо HTML-код генерировался в помощнике.

Какие еще есть варианты?

Ответы [ 3 ]

1 голос
/ 23 декабря 2010

Лично я бы сделал это как оператор if в представлении, так как ясно, что вы собираетесь, но вы можете добавить метод расширения, если хотите:

public static MvcHtmlString AttachedDocumentLink(this HtmlHelper helper, string text, string action, string controller, int? attachedDocumentId)
{
    return attachedDocumentId == null ? MvcHtmlString.Empty : helper.ActionLink(text, action, controller, new { id = attachedDocumentId }, null);
}

Затем вызвать его в вашемсмотреть как обычно

<%= Html.AttachedDocumentLink("Document", "AttachedDocument", "Posts", comment.AttachedDocumentId) %>
0 голосов
/ 26 декабря 2010

Если у вас есть отдельная модель для представления (ViewModel), переместите туда эту логику.Таким образом, логика принадлежит представлению остается в одном месте.Я предпочитаю использовать HtmlHelpers только для общих случаев повторного использования в представлениях.

0 голосов
/ 23 декабря 2010

Дейв прав - нет ничего плохого в том, что в представлении есть утверждения. петли тоже в порядке. вещи, которых следует избегать, - иметь представление для выполнения любых запросов, расчетов или модификаций модели.

...