如何在MVC视图中构造if语句

时间:2011-01-01 11:08:15

标签: asp.net-mvc asp.net-mvc-2 view

希望这个问题快速无痛

我有一个mvc视图,我希望根据if语句显示两个值中的任何一个。这就是我在视图中所拥有的:

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

如果为true,则显示model.LocalComment,如果为false,则显示模型.IntComment。

这不起作用,因为我显示了两个值。我做错了什么?

3 个答案:

答案 0 :(得分:11)

您的if语句始终评估为true。您正在测试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) %>
<% } %>

显然,您需要使用正确的值替换12

就个人而言,我会为此任务编写一个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() %>

答案 1 :(得分:6)

除了Darin关于条件始终为真的观点之外,您可能还想考虑使用条件运算符:

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

(当然,调整你的真实条件。)

我个人认为这比<% %><%= %>的大混合更容易阅读。

答案 2 :(得分:0)

Conditional Rendering in 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")%>