asp.net-mvc - 有条件地使用 ASP.NET MVC Razor 中的链接

标签 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"] 放在 @{ 上方,则名称显示得很好。我做错了什么?

最佳答案

您正在代码块 (@{ ... }) 内调用 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/

相关文章:

asp.net-mvc - 类似于 stackoverflow 的通知面板

javascript - 音频 html5 关于静音事件 javascript?在MVC中

c# - 向 Unity IoC 注册 AccountController

c# - ASP MVC 上 ViewModel 字段的条件验证

asp.net-mvc - Identity 2.0 使用 token 重置短信密码

c# - 帮助设计订单管理器类

ASP.NET MVC 通过 ActionLink 传递模型

asp.net - 有哪些不同类型的状态管理技术?

asp.net-mvc - System.Data.Entity.Core.MetadataException 部署时

asp.net-mvc - asp.net mvc禁用ajax缓存