如果没有在Razor内部呈现HTML

cor*_*ump 3 html c# asp.net asp.net-mvc razor

我在视图文件里面有类似的东西

 @Html.ActionLink("Details", "Details", new { id=item.RuleId }) |                     
  @Html.ActionLink("Edit", "Edit", new { id = item.RuleId }) |
  @Html.ActionLink("Delete", "Delete", new { id = item.RuleId })

Run Code Online (Sandbox Code Playgroud)

这是有效的,但是当我把它改成类似的东西时

 @Html.ActionLink("Details", "Details", new { id=item.RuleId }) |

     @if( something )
  {                
  Html.ActionLink("Edit", "Edit", new { id = item.RuleId });
  Html.ActionLink("Delete", "Delete", new { id = item.RuleId });
  }     
Run Code Online (Sandbox Code Playgroud)

它停止显示第二个和第三个项目(虽然进入分支).

有什么想法吗?

SLa*_*aks 9

Html.ActionLink返回IHtmlString包含<a>标记的对象.
它本身没有任何作用.

你的代码忽略了这个结果,所以没有任何反应.

您需要使用该@字符将结果打印到页面.

  • @coredump:Razor中的`@`意味着两件不同的事情.`@ {`或`@ if`打开一个代码块(你在说什么).`@expression`将表达式打印到页面(我正在谈论的),并且可以出现在代码或标记上下文中. (4认同)