带有HTML.ActionLink的ASP.NET MVC Razor三元

use*_*757 4 ternary-operator razor asp.net-mvc-3

我试图回答这个问题:

如何在剃刀中使用三元运算符(特别是在HTML属性上)?

使用Html.ActionLink; 这样的事情:

@(ViewData["page"] == "Page1" ? "Page1" : Html.ActionLink("Page 1", "Page1", "Index"))
Run Code Online (Sandbox Code Playgroud)

这可能吗?

SLa*_*aks 6

三元操作必须从两半返回相同的类型.
你在String左边返回一个,但是IHtmlString在右边.

将其更改为

@(ViewData["page"] == "Page1" ? Html.Raw("Page1") : Html.ActionLink(...))
Run Code Online (Sandbox Code Playgroud)

您可能还希望将其移动到HTML帮助程序扩展方法中.