【问题标题】:ASP.NET MVC ActionResult not showing image on IPadASP.NET MVC ActionResult 未在 iPad 上显示图像
【发布时间】:2012-07-25 12:02:12
【问题描述】:

我有一个使用 Url.Action 填充图像 src 的 JQuery 日期选择器。

 <script type="text/javascript">
        $(function () {
            $('#datepicker').datepicker({
                inline: true,
                altField: '#selecteddate',
                altFormat: 'dd-mm-yy',
                onSelect: function () {
                    var date = $('#datepicker').datepicker('option', 'dateFormat', 'yy-mm-dd');
                    $('#diary img').attr(
                        'src',
                        '<%= Url.Action("Image") %>/' + date.val().toString());
                }
            });
        });        
    </script>

图像是在我的控制器上使用以下操作转换为 png 的内存位图

public class ImageResult : ActionResult
{
    Image image;

    public ImageResult(Image image)
    {
        this.image = image;
    }

    public override void ExecuteResult(ControllerContext context)
    {
        context.HttpContext.Response.Clear();
        context.HttpContext.Response.ContentType = "image/png"; 

        image.Save(context.HttpContext.Response.OutputStream, ImageFormat.Png);                         
        image.Dispose();
    }
}

图像显示正常,但图像 src 没有扩展名,因此显示为 /2012-07-11 如何添加扩展名 .png?如果没有,我相信它会阻止它在 Ipad 上显示。

【问题讨论】:

  • 您是否使用默认路由模式作为该图片的 URL?请发布在浏览器上呈现的路线和相应的 URL。至少,您应该能够使用自定义路由显示 .png 扩展名。
  • 是的,我正在使用默认路由模式 - 图像如下所示 很确定我只需要添加.png 在日期的末尾。谢谢

标签: c# asp.net-mvc


【解决方案1】:

您可以重新创建一个内置了 .png 扩展的新路由:

routes.MapRoute(
   "Image", // Route name
   "tunnel/image/{id}.png", // URL with parameters
   new { controller = "Tunnel", action = "Image" }            
);

然后像这样更新你的javascript:

'tunnel/image/' + date.val().toString() + '.png';

【讨论】:

    猜你喜欢
    • 2018-12-20
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2011-07-31
    • 1970-01-01
    • 1970-01-01
    • 2019-09-10
    • 1970-01-01
    相关资源
    最近更新 更多