You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

ASP.NET Core 7/Razor:如何让控制器输出在新浏览器标签页显示?

附件预览问题:点击链接触发下载而非新标签页预览

我有一个Razor页面,上面包含一组「附件」列表,希望用户能够对这些附件进行「预览」。每个「预览」链接会调用一个控制器动作,该动作从数据库查询数据后,将附件以ASP.NET的FileStreamResult形式返回。

问题现象

点击链接时,文件会被下载,而我需要它在新浏览器标签页中显示。

Razor.cshtml代码:

<a href="@Model.ParseUrl(Model.MSServiceArea.QE042)" target="_blank" >@Model.ParseFileName(Model.MSServiceArea.QE042)</a>&nbsp;

动态生成的href:

https://localhost:44342/LifeCycle/Attachments/Download?ModuleName=MSServiceArea&LookupKey=abc

控制器代码:

public IActionResult OnGet(string ModuleName, string LookupKey)
{
    string fileName, mimeType;
    Stream stream = Attachment.Download(ctx, null, ModuleName, LookupKey, out fileName, out mimeType);
    stream.Position = 0;

    var fileStreamResult = new FileStreamResult(stream, mimeType)
    {
        FileDownloadName = fileName
    };

    return fileStreamResult;
}

需求目标

实现以下流程:

  • 用户点击Razor页面中的链接
  • 从数据库读取任意MIME类型的「附件」
  • 在新浏览器标签页中向用户展示该附件

疑问:我原本以为在锚点元素中添加target="_blank"就足够了,请问我遗漏了什么?


更新:部分成功但存在局限性

通过返回包裹附件的HTML,现在能在新标签页显示而非下载,但仅支持图片类型:

当前问题

如果附件是图片文件(如.png、.gif等),方案正常工作;但对于其他文件类型(如HTML、PDF等)无法正确显示,会显示「损坏的图片」图标。

原控制器(仅返回附件二进制数据):

public IActionResult OnGetDownload(string ModuleName, string LookupKey)
{
    string fileName, mimeType;
    Stream stream = Attachment.Download(ctx, null, ModuleName, LookupKey, out fileName, out mimeType);
    stream.Position = 0;
    var fileStreamResult = new FileStreamResult(stream, mimeType)
    {
        FileDownloadName = fileName
    };
    return fileStreamResult;
}

新「预览」控制器(将附件包裹在静态HTML中):

public IActionResult OnGetPreview(string ModuleName, string LookupKey)
{
    string html = "<html><body><img src=\"URL\" ></body></html>";
    string url = "./Download/" + HttpContext.Request.QueryString;
    html = html.Replace("URL", url);
    return base.Content(html, "text/html");
}

结果:

  • .png、.gif等图片文件:<a ... target="_blank">可在新标签页成功显示附件
  • .pdf、.html等文件:会打开新标签页,但显示「损坏的图片」图标而非附件内容

内容的提问来源于stack exchange,提问作者paulsm4

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.20 14:22:47