65.9K
CodeProject 正在变化。 阅读更多。
Home

ASP.NET MVC – 超链接 – 在新的浏览器窗口中打开页面

starIconstarIconstarIconstarIconstarIcon

5.00/5 (1投票)

2014年6月4日

CPOL

2分钟阅读

viewsIcon

47163

ASP.NET MVC – 超链接 – 在新的浏览器窗口中打开页面

在上一篇博文中,我们讨论了 ASP.NET MVC 中的 DataTypeDisplayColumn 属性。 你可以在 这里 阅读那篇文章。 在本文中,我们将探讨如何在点击超链接时在新的浏览器窗口中打开页面

让我们通过一个例子来理解。 我们将使用我们在 上一篇文章 中使用的相同示例。 首先,像下面这样更改 Home 控制器中的 Details 操作方法。

public ActionResult Details(int id)
{
SampleDBContext db = new SampleDBContext();
tblEmployee employee = db.tblEmployees.Single(x => x.Id == id);
return View(employee);
}

MVC1

然后,像下面这样更改 Details 视图

MVC2

构建解决方案并运行它。 在这一点上,我们应该能够看到员工的完整详细信息。

MVC3

请注意,PersonalWebSite 属性被渲染为一个超链接。 这是因为在 tblEmployee 类中,我们使用 DataType 属性装饰了 PersonalWebSite 属性。

MVC4

右键单击页面并选择 查看页面源代码。 注意这里生成的锚标签。 它有一个 href 属性,但没有 target 属性

MVC5

我们知道,如果希望 Url 在新窗口中打开,则需要将 target 属性设置为 _blank。 由于此锚标签没有 target 属性,因此当我们点击超链接时,目标页面将在同一窗口中打开。

MVC6

让我们看看如何在新的窗口中打开 Url。 请按照以下步骤操作

  • 右键单击 Views 文件夹并添加 Shared 文件夹。
  • 右键单击 Shared 文件夹并添加 DisplayTemplates 文件夹。
  • 右键单击 DisplayTemplates 文件夹并添加一个视图。 将 Url 设置为名称并使用 Razor 视图引擎。

MVC7

请注意这里视图的名称。 它与 enumDataType.Url 匹配。 然后将以下代码复制并粘贴到 Url.cshtml 视图中。

<a href=”@ViewData.Model” target=”_blank”>@ViewData.Model</a>

MVC8

现在构建解决方案并刷新视图。 让我们右键单击页面并选择 查看页面源代码。 注意这里的锚标签。 现在我们有一个 target 属性,它被设置为 _blank

MVC9

如果现在点击链接,Url 应该在新窗口中打开。

MVC10

但是这种方法的缺点是,从现在开始,所有链接都将在新窗口中打开。 但是我们的要求是只有 PersonalWebSite 应该在新窗口中打开。 应用程序中的其余链接需要在同一窗口中打开。 为此,需要进行两个简单的修改。

  1. Url.cshtml 重命名为 OpenInNewWindow.cshtml
  2. 使用 UIHint 属性装饰 EmployeeMetaData 类中的 PersonalWebSite 属性,并指定要使用的模板名称。 在我们的例子中,模板名称是 OpenInNewWindow
public class EmployeeMetaData
{
    [DataType(DataType.Url)]
    [UIHint("OpenInNewWindow")]
    public string PersonalWebSite { get; set; }
}

MVC11

现在运行应用程序,我们可以看到除了 PersonalWebSite 之外,所有其他链接都将在同一窗口中打开。

从上面的例子可以看出,UIHint 属性用于指定用于显示数据字段的模板名称。

参考

Arun Ramachandran (http://BestTEchnologyBlog.Com)

© . All rights reserved.