Как мне создать оператор if в MVC View? - PullRequest
9 голосов
/ 01 января 2011

Надеюсь, этот вопрос будет быстрым и безболезненным

У меня есть представление MVC, где я хочу отобразить одно из двух значений в зависимости от оператора if. Вот что я имею в виду:

 <%if (model.CountryId == model.CountryId) %>
        <%= Html.Encode(model.LocalComment)%> 
        <%= Html.Encode(model.IntComment)%>

Если true, отображать модель. LocalComment, если false отображать модель. IntComment.

Это не работает, так как отображаются оба значения. Что я делаю не так?

Ответы [ 3 ]

11 голосов
/ 01 января 2011

Ваше if утверждение всегда оценивается как истинное. Вы проверяете, равно ли model.CountryId model.CountryId, что всегда верно: if (model.CountryId == model.CountryId). Также вам не хватает оператора else. Должно быть так:

<%if (model.CountryId == 1) { %>
    <%= Html.Encode(model.LocalComment) %> 
<% } else if (model.CountryId == 2) { %>
    <%= Html.Encode(model.IntComment) %>
<% } %>

Очевидно, вам нужно заменить 1 и 2 на правильные значения.

Лично я бы написал помощник HTML для этой задачи, чтобы избежать супа тега в представлениях:

public static MvcHtmlString Comment(this HtmlHelper<YourModelType> htmlHelper)
{
    var model = htmlHelper.ViewData.Model;
    if (model.CountryId == 1)
    {
        return MvcHtmlString.Create(model.LocalComment);
    } 
    else if (model.CountryId == 2)
    {
        return MvcHtmlString.Create(model.IntComment);
    }
    return MvcHtmlString.Empty;
}

А потом, на ваш взгляд, просто:

<%= Html.Comment() %>
6 голосов
/ 01 января 2011

Помимо замечания Дарина о том, что условие всегда выполняется, вы можете рассмотреть возможность использования условного оператора:

<%= Html.Encode(model.CountryId == 1 ? model.LocalComment : model.IntComment) %>

(отрегулируйте для любого условия real конечно.)

Лично мне легче читать, чем большую смесь <% %> и <%= %>.

0 голосов
/ 01 января 2011

Условный рендеринг в Asp.Net MVC Views

 <% if(customer.Type == CustomerType.Affiliate) %>
   <%= this.Html.Image("~/Content/Images/customer_affiliate_icon.jpg")%>
 <% else if(customer.Type == CustomerType.Preferred) %>
   <%= this.Html.Image("~/Content/Images/customer_preferred_icon.jpg")%>
 <% else %>
   <%= this.Html.Image("~/Content/Images/customer_regular_icon.jpg")%>  
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...