c# - Asp.Net MVC,从数据库动态加载图像 - 图像闪烁

标签 c# asp.net-mvc

我正在从数据库加载图像并在 _Layout.cshtml 中显示该图像。

图像可以改变(登录后),每个公司可能有不同的图像,所以在登录后,我去数据库并为该公司获取相应的图像(基于它的 Id)。我需要保留这个加载的图像,不需要再次访问服务器。

一切正常,我可以加载图像并在 _Layout 中显示,但在每次请求后,图像“闪烁”,因为正在重新创建 _Layout。

我关注了this问题(第 1 步)从数据库加载图像。

我的代码是:

    public ActionResult CarregarLogoEmpresa()
    {
        if (SecurityManager.Instance.Identity.IsAuthenticated)
        {
            var codigoEmpresaLogada = SecurityManager.Instance.Session.IdEmpresa;

            var logoEmpresa = _empresaAppService.BuscarLogoEmpresa(codigoEmpresaLogada);

            //return Json(Convert.ToBase64String(logoEmpresa), JsonRequestBehavior.AllowGet);

            return File(logoEmpresa, "image/jpg");
        }

        return null;
    }

在 View 中:

<img src='@Url.Action("CarregarLogoEmpresa", "Image")' />

有没有办法保持图像加载而不是重新创建,从而避免每次都闪烁?

最佳答案

这种闪烁的发生可能是因为从数据库加载图像需要时间。我建议使用 Asp.Net OutputCache 以最大限度地减少加载时间。

行动:

[OutputCahce(VaryByParam="CodigoEmpresaLogada", Duration=30)]
public ActionResult CarregarLogoEmpresa(int CodigoEmpresaLogada)
{
    if (SecurityManager.Instance.Identity.IsAuthenticated)
    {
        var logoEmpresa = _empresaAppService.BuscarLogoEmpresa(CodigoEmpresaLogada);

        //return Json(Convert.ToBase64String(logoEmpresa), JsonRequestBehavior.AllowGet);

        return File(logoEmpresa, "image/jpg");
    }

    return null;
}

查看:

<img src='@Url.Action("CarregarLogoEmpresa", "Image", new {CodigoEmpresaLogada = SecurityManager.Instance.Session.IdEmpresa})' />

关于c# - Asp.Net MVC,从数据库动态加载图像 - 图像闪烁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41099078/

相关文章:

c# - 如何在 IValidatableObject.Validate 方法的 ValidationContext 参数中提供 IServiceProvider

当存在多个匹配时,C# XPathSelectElement()

c# - 无法通过引用转换、装箱转换、拆箱转换、包装转换或空类型转换将类型 'string' 转换为 'int?'

c# - Windows Phone Company Hub 应用程序 - 无法覆盖/更新现有应用程序

asp.net - 为什么会在页面加载前后调用Owin Startup类的Configuration方法?

c# - Asp.net Identity 在没有 HttpContext 的情况下创建用户

c# - 调用@Html.Partial 显示属于不同 Controller 的分部 View

c# - 如何使用 EF 在 MVC Code-first 中更新/创建多对多关系数据?

c# - 闯入 C# 调试器以除以零

c# - Mongo C# 驱动程序指标