如果没有在Razor内部呈现HTML

时间:2013-07-08 19:01:30

标签: c# html 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 })

这是有效的,但是当我把它改成像

这样的东西时
 @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 });
  }     

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

任何想法为什么?

2 个答案:

答案 0 :(得分:9)

Html.ActionLink会返回包含IHtmlString标记的<a>对象 它本身没有做任何事情。

您的代码忽略了此结果,因此没有任何反应。

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

答案 1 :(得分:0)

用以下代码替换您的代码:

@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 })
}