我正在使用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"]
放在@{
正上方,则该名称就会显示正常。我做错了什么?
答案 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>");
}