Razor视图显示在新窗口中打开的DisplayFor DataType.Url

Sim*_*tin 5 asp.net-mvc razor

如何使用Razor和DisplayFor在新窗口中打开链接?

我有一个属性,是DataType.Url,

[DataType(DataType.Url)]
public string SiteUrl { get; set; }
Run Code Online (Sandbox Code Playgroud)

使用@Html.DisplayFor它将转换为a标签.

@Html.DisplayFor(model => item.SiteUrl)
Run Code Online (Sandbox Code Playgroud)

但是我需要它在新窗口中打开.设置new {target="_blank"}不会为目标添加属性

@Html.DisplayFor(model => item.SiteUrl, new {target="_blank" })
Run Code Online (Sandbox Code Playgroud)

只有这一页我需要在新窗口中打开的功能,所以使用JavaScript似乎有点过分.

如何在新窗口中打开链接?

Dar*_*rov 13

您可以通过添加~/Views/Shared/DisplayTemplates/Url.cshtml包含以下内容的文件来覆盖默认模板:

<a href="@ViewData.Model" target="_blank">@ViewData.TemplateInfo.FormattedModelValue</a>
Run Code Online (Sandbox Code Playgroud)

  • 是的,您可以将模板命名为例如`〜/ Views/Shared/DisplayTemplates/NewWindowUrl.cshtml`,然后使用`UIHint`属性装饰您的视图模型属性:`[UIHint("NewWindowUrl"),DataType(DataType.Url) )] public string SiteUrl {get; 组; }`.现在,仅查看使用此UIHint属性修饰的模型属性将使用自定义模板,而其他属性将使用默认模板属性. (6认同)