【问题标题】:asp.net mvc multi-parameter requests for dynamic images?asp.net mvc多参数请求动态图片?
【发布时间】:2009-04-28 15:36:23
【问题描述】:

在网络表单中,我们会做这样的事情来设置处理程序来生成动态图像:

<img src="/barchart.aspx?width=1024&height=768&chartId=50" >

然后我们当然会在 .aspx 页面上编写代码来使用参数呈现图像并将其写回响应中。

老实说,我不确定如何使用 MVC 设置/处理此类请求,以及我们将如何从视图中激活它(一般而言)。

非常欢迎提前提供任何指示或帮助。

【问题讨论】:

    标签: asp.net-mvc image dynamic query-string routes


    【解决方案1】:

    如果我理解正确的话:

    public class ImageGeneratorController : Controller {
        public ActionResult BarChart(int width, int height, int chartId) {
            // ASP.NET MVC will map the request parameters to method arguments
        }
    }
    

    创建链接:

    Url.Action("BarChart", "ImageGenerator", new {
        width = 1024,
        height = 768,
        chartId = 50
    });
    

    将输出:

    /ImageGenerator/BarChart?width=1024&height=768&chartId=50
    

    【讨论】:

    • 这就是我想要的。映射到此的 URL 是什么样的?
    • @MikeJ -- 除非你使用默认路由以外的东西。
    • 谢谢大卫。那真的,对我很有帮助。我认为对于像我这样的 n00bs,这是关于 MVC 的令人困惑的事情之一。是如何将“旧”网址映射到 /controller/action/parameter 方法,但我可以看到有一种方法不必这样做。不错。
    【解决方案2】:

    您不需要视图来实现这一点。您可以有一个返回 FileResult 的操作并将图像写入响应,如下所示:

    public FileResult BarChart(int width, int height, int chartID) {
        //create the chart
        return new FileContentResult(byte[] fileContents, string contentType);
    }

    还有html:

    <img src="/yourController/BarChart/1024/768/50">
    

    【讨论】:

    • 该特定 URL 不需要自定义命名路由吗?
    • 是的。至少参数看起来是这样的。
    猜你喜欢
    • 1970-01-01
    • 2011-02-04
    • 1970-01-01
    • 1970-01-01
    • 2018-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多