MVC4 Razor简写如果

时间:2014-04-17 14:18:59

标签: asp.net-mvc asp.net-mvc-4 razor actionlink shorthand-if

@{(int)Session["current"] == 1 ? Html.ActionLink("Home", "Index", "Home", new { @class = "selected" }) : Html.ActionLink("Home", "Index", "Home");}

当我使用此代码时出现错误:     CS0201:只能将赋值,调用,递增,递减,等待和新对象表达式用作语句

我不认为“;”应该是在最后,但没有它我得到一个错误说它丢失了。我尝试过使用<%=%>语法,但也没有用。

2 个答案:

答案 0 :(得分:5)

你可以这样做

@Html.ActionLink("Pradžia", "Index", "Home", null, new { @class = (int)Session["current"] == 1 ? "selected" : "" })

答案 1 :(得分:2)

@async有一个很好的答案。

只是为了让你知道,̶等效为̶̶<̶%̶=̶ ̶%̶>̶̶在剃刀̶̶@̶(̶)̶̶,̶不̶̶@̶{̶}̶̶

编辑: 正如@JeremyCook指出的那样,<%= %>的等价物是@Html.Raw()。但是在你的情况下因为你使用的是Html helper,所以不需要转义html编码。所以你可以使用@()

因此,对于您的情况,您可以简单地替换括号(并删除“;”)然后它应该工作:

@((int)Session["current"] == 1 ? 
    Html.ActionLink("Home", "Index", "Home", new { @class = "selected" }) :     
    Html.ActionLink("Home", "Index", "Home"))