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





5.00/5 (1投票)
ASP.NET MVC – 超链接 – 在新的浏览器窗口中打开页面
在上一篇博文中,我们讨论了 ASP.NET MVC 中的 DataType
和 DisplayColumn
属性。 你可以在 这里 阅读那篇文章。 在本文中,我们将探讨如何在点击超链接时在新的浏览器窗口中打开页面。
让我们通过一个例子来理解。 我们将使用我们在 上一篇文章 中使用的相同示例。 首先,像下面这样更改 Home 控制器中的 Details 操作方法。
public ActionResult Details(int id)
{
SampleDBContext db = new SampleDBContext();
tblEmployee employee = db.tblEmployees.Single(x => x.Id == id);
return View(employee);
}
然后,像下面这样更改 Details 视图
构建解决方案并运行它。 在这一点上,我们应该能够看到员工的完整详细信息。
请注意,PersonalWebSite
属性被渲染为一个超链接。 这是因为在 tblEmployee
类中,我们使用 DataType
属性装饰了 PersonalWebSite
属性。
右键单击页面并选择 查看页面源代码。 注意这里生成的锚标签。 它有一个 href
属性,但没有 target 属性。
我们知道,如果希望 Url 在新窗口中打开,则需要将 target 属性设置为 _blank
。 由于此锚标签没有 target
属性,因此当我们点击超链接时,目标页面将在同一窗口中打开。
让我们看看如何在新的窗口中打开 Url。 请按照以下步骤操作
- 右键单击 Views 文件夹并添加 Shared 文件夹。
- 右键单击 Shared 文件夹并添加 DisplayTemplates 文件夹。
- 右键单击 DisplayTemplates 文件夹并添加一个视图。 将 Url 设置为名称并使用 Razor 视图引擎。
请注意这里视图的名称。 它与 enum
值 DataType.Url
匹配。 然后将以下代码复制并粘贴到 Url.cshtml
视图中。
<a href=”@ViewData.Model” target=”_blank”>@ViewData.Model</a>
现在构建解决方案并刷新视图。 让我们右键单击页面并选择 查看页面源代码。 注意这里的锚标签。 现在我们有一个 target 属性,它被设置为 _blank
。
如果现在点击链接,Url 应该在新窗口中打开。
但是这种方法的缺点是,从现在开始,所有链接都将在新窗口中打开。 但是我们的要求是只有 PersonalWebSite
应该在新窗口中打开。 应用程序中的其余链接需要在同一窗口中打开。 为此,需要进行两个简单的修改。
- 将 Url.cshtml 重命名为 OpenInNewWindow.cshtml
- 使用
UIHint
属性装饰EmployeeMetaData
类中的PersonalWebSite
属性,并指定要使用的模板名称。 在我们的例子中,模板名称是OpenInNewWindow
。
public class EmployeeMetaData
{
[DataType(DataType.Url)]
[UIHint("OpenInNewWindow")]
public string PersonalWebSite { get; set; }
}
现在运行应用程序,我们可以看到除了 PersonalWebSite
之外,所有其他链接都将在同一窗口中打开。
从上面的例子可以看出,UIHint
属性用于指定用于显示数据字段的模板名称。
参考
Arun Ramachandran (http://BestTEchnologyBlog.Com)