【问题标题】:Use Razor Page handler as image source使用 Razor 页面处理程序作为图像源
【发布时间】:2020-07-05 03:09:28
【问题描述】:

我有以下处理程序

public IActionResult OnGetCaptchaImage()
    {
        const int numCaptchaCharactersInCode = 6;
        const int charWidth = 20;
        const int width = numCaptchaCharactersInCode * charWidth;
        const int height = 40;
        var captchaCode = Captcha.GenerateCaptchaCode(numCaptchaCharactersInCode);
        var result = Captcha.GenerateCaptchaImage(width, height, captchaCode);
        HttpContext.Session.SetString("CaptchaCode", result.CaptchaCode);
        Stream s = new MemoryStream(result.CaptchaByteData);
        return new FileStreamResult(s, "image/png");
    }

我需要在此处显示生成的图像

<img id="img-captcha" src="???" alt="Captcha Image"/>

提前感谢您的建议。

【问题讨论】:

    标签: asp.net-core razor-pages


    【解决方案1】:

    链接是

    <img id="img-captcha" src="Create?handler=CaptchaImage" alt="Captcha Image"/>
    

    它遵循这里的示例:

    https://codeshorts.com/ASP-NET-CORE-Razor-Pages-Return-a-image-from-a-byte-array

    【讨论】:

    • 其他示例表明您发布的内容适用于控制器,但不适用于 razor 页面。反正我试过了,没找到方法。我是 Razor Pages 的新手,并且在 MVC 背景中遇到了这个问题。
    • 一种选择是为静态文件实现自定义IFileProvider,但可能有更优雅的解决方案。我自己在学习 Razor 页面并忽略了标签,抱歉。
    • 这绝对是不同的...我试图拒绝将 WebAPI 添加到项目中只是为了支持诸如此类的各种服务,但也许这就是我最终的目标。
    • 此链接显示了如何完成:codeshorts.com/…
    • 我用谷歌搜索没完没了……非常感谢。对于之后的任何人......我所做的只是改变:src="Create?handler=CaptchaImage"。完美运行。
    猜你喜欢
    • 1970-01-01
    • 2011-03-19
    • 2019-08-02
    • 2020-04-20
    • 1970-01-01
    • 2021-06-08
    • 2018-11-21
    • 1970-01-01
    • 2020-10-18
    相关资源
    最近更新 更多