ASP.NET Razor - 我可以在三元运算符中放置一个链接吗?

标签 asp.net html razor

我的 MVC4 View 中有一个三元运算符:

@(modelrecord.Website == null ? "": modelrecord.Website.Replace("http://","") )

这行得通,但我想让网站记录一个超链接。这可能吗?

注意:我正在替换“http://”前缀,因为它很难看。

如果我用 Html.Raw 放入实际字符串,尖括号被转义,我仍然没有得到链接。

最佳答案

您可能应该使用 DataAnnotations@Html.DispayFor 助手。

public class ModelRecord
{
    [DataType(DataType.EmailAddress)]
    public String EmailAddress { get; set; }

    [DataType(DataType.Url)]
    public String Website { get; set; }
}

然后:

email me at @Html.DisplayFor(x => x.EmailAddress)
or visit me online at @Html.DisplayFor(x => x.Website)

DataTypeAttribute处理 url、电子邮件等内容并根据需要格式化它们。

如果你想自定义所有的Urls,你可以创建一个display template为此:

~/Views/Shared/DisplayTemplates/Url.cshtml

@model String
@if (!String.IsNullOrEmpty(Model))
{
    <a href="@Model">@Model.Replace("http://", "")</a>
}
else
{
    @:Default text when url is empty.
}

DisplayTemplates(如 EditorTemplates)是 MVC 使用的基于约定的路径。因此,您可以将模板放在 Shared 目录中以在整个站点范围内应用此更改,或者您可以将文件夹放在其中一个 Controller 文件夹中以仅将其应用于该 Controller (例如~/Views/Home/Displaytemplates/Url.cshtml)。此外,Url 是与 DisplayType 一起使用的预定义模板之一,还有以下内容:

  • 网址
  • 电子邮件地址
  • 隐藏输入
  • HTML
  • 正文

关于ASP.NET Razor - 我可以在三元运算符中放置一个链接吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15973989/

相关文章:

javascript - 从我的网站查询第三方网站的数据库

asp.net - Ajax 自动完成扩展程序并获取所选项目的 ID?

html - 排除电子邮件表达式的正则表达式

javascript - 使用部分 View 从多个位置引用相同的 js 文件

c# - MVC 4 IntelliSense 在 Visual Studio 2010 中的 Razor 中不起作用

asp.net - 在部署服务器上安装 ASP.Net SignalR

c# - 在 azure 上发布时列名无效

javascript - twitter 小部件仅在第一次加载时工作,然后失败

jQuery动态创建的表需要动态添加id到<td>的

asp.net - Razor View Engine 是否适用于 Mono?