如果表达没有评估

时间:2014-04-07 16:00:11

标签: c# asp.net-mvc-4

我有一个for循环,我想根据if语句评估打印一些页面内容。似乎没有评估if语句中的表达式,因为没有分支打印出内容。

//evaluates to True
<%: (ViewData["project_id_PO"] as List<int>).Contains(4) %> 

//doesn't evaluate
<% if((ViewData["project_id_PO"] as List<int>).Contains(4) == true){ 
        Html.Raw("<p>Test1</p>");
    }
    else
    {
        Html.Raw("<p>Test2</p>");
    } %>
} %>

这里可能有什么问题?

1 个答案:

答案 0 :(得分:1)

  

似乎没有评估if语句中的表达式,因为没有分支打印出内容。

这是一个不正确的假设。

<% %>代码块优先于代码但不明确地向输出流写入任何内容。

我相信你想要实现的是以下

<%= (ViewData["project_id_PO"] as List<int>).Contains(4) 
    ? Html.Raw("<p>test1</p>")
    : Html.Raw("<p>test1</p>") %>

使用<%=将输出呈现给流。

但是,您最好为此目的创建一个ViewModel,而不是在View中进行计算。