有条件地使用ASP.NET MVC Razor中的链接

时间:2015-02-13 18:20:29

标签: asp.net-mvc

我正在使用ASP.NET MVC开发应用程序。我需要能够有时显示一个链接。其他时候,我只需要使用文字。为了实现这一目标,我在我的观点中写了以下内容:

@{
   var showLink = !String.IsNullOrWhiteSpace(item["id"].ToString());
   if (showLink) {
     Html.Raw("<a href=\"#\">");
   }
   Html.Raw(item["name"]);

   if (showLink) {
    Html.Raw("</a>");
   }
}

不幸的是,这不起作用。名称不呈现。但是,如果我将@item["name"]放在@{正上方,则该名称就会显示正常。我做错了什么?

1 个答案:

答案 0 :(得分:2)

您在代码块(Html.Raw(item["name"]))内调用@{ ... } - 代码块按正常C#运行;他们的结果没有像内联剃刀那样呈现给响应。因此,Html.Raw返回的字符串才被丢弃。

你想:

@{
    var showLink = !String.IsNullOrWhiteSpace(item["id"].ToString());
}

@if (showLink)
{
    @Html.Raw("<a href=\"#\">");
} 

@Html.Raw(item["name"]);

@if (showLink)
{
    @Html.Raw("</a>");
}