希望这个问题快速无痛
我有一个mvc视图,我希望根据if语句显示两个值中的任何一个。这就是我在视图中所拥有的:
<%if (model.CountryId == model.CountryId) %>
<%= Html.Encode(model.LocalComment)%>
<%= Html.Encode(model.IntComment)%>
如果为true,则显示model.LocalComment,如果为false,则显示模型.IntComment。
这不起作用,因为我显示了两个值。我做错了什么?
答案 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) %>
<% } %>
显然,您需要使用正确的值替换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() %>
答案 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")%>