【问题标题】:In ASP.NET MVC, how can I open a static .html page in a new tab from an action method in a controller?在 ASP.NET MVC 中,如何从控制器中的操作方法在新选项卡中打开静态 .html 页面?
【发布时间】:2018-02-06 08:59:43
【问题描述】:

我正在向我的 MVC 应用程序添加静态帮助页面。

点击帮助链接指向一个带有唯一标识符的动作方法,告诉控制器要显示哪个页面。

我知道它可以在视图中使用 Javascript 或锚标记来完成。

您也可以从控制器打开静态页面,但它不会在新选项卡中打开:

var result = new FilePathResult("~/Help/index.html", "text/html");
return result;

我似乎无法在控制器的新选项卡中打开此静态页面。这甚至可能吗?

编辑

至于How do you request static .html files under the ~/Views folder in ASP.NET MVC?为什么不能解决我的问题:

我的静态文件不在 Views 文件夹中,它也没有解决在新选项卡中打开页面的问题。

编辑 2 - 解决方案

由于这不能直接从控制器中完成,我在我的视图脚本中实现了以下内容。

$('#linkAppHelpButton').off().on('click', function () {
        $.ajax({
            type: "GET",
            url: '@Url.Action("ReturnHelpPage", "Help", null)',
            data: { identifier: "index" },
            success: function (page) {
                window.open(page, '_blank');
            },
        })
    });

【问题讨论】:

标签: asp.net asp.net-mvc


【解决方案1】:

由于控制器是在服务器端处理的,因此无法控制浏览器的某些方面,例如“在新选项卡中打开”。

您可以(正如您所发现的)通过控制器操作提供 HTML 文件,或者只允许 Web 服务器直接提供它。但在新标签页中打开内容的唯一选择是使用 <a target="_blank" href="some URL">new tab</a> 或使用 JavaScript。

【讨论】:

  • 谢谢,看来不能直接通过控制器完成。已实现返回详细信息的 Ajax 调用。请参阅编辑 2 以获取解决方案。
猜你喜欢
  • 2021-12-22
  • 1970-01-01
  • 2015-11-14
  • 1970-01-01
  • 1970-01-01
  • 2015-07-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多