我正在开发一个使用 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"]
放在 @{
上方,则名称显示得很好。我做错了什么?
最佳答案
您正在代码块 (@{ ... }
) 内调用 Html.Raw(item["name"])
- 代码块运行为普通C#;它们的结果不会像内联 Razor 那样呈现给响应。因此,Html.Raw
返回的字符串将被丢弃。
你想要:
@{
var showLink = !String.IsNullOrWhiteSpace(item["id"].ToString());
}
@if (showLink)
{
@Html.Raw("<a href=\"#\">");
}
@Html.Raw(item["name"]);
@if (showLink)
{
@Html.Raw("</a>");
}
关于asp.net-mvc - 有条件地使用 ASP.NET MVC Razor 中的链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28506139/