0

DevExpress ゲージ コントロールを MVC で動作させようとしています。実際のチュートリアルはhttp://www.devexpress.com/Support/Center/p/E2976.aspxにあります。xml ファイルを介して行うことは、設定を作成し、画像を作成します。画像はコントローラーのメモリ ストリームに格納され、View にある img タグにプッシュされます。この img タグ src attr は Url.Action を呼び出して、ゲージをレンダリングするアクションを呼び出します。コントローラーのコードは次のようになります

[OutputCache(Duration = 1000, VaryByParam = "param")]
        public ActionResult RenderGauge(double param)
        {
            ASPxGaugeControl ctrl = new ASPxGaugeControl();
            param = param * 100;
            ctrl.RestoreLayoutFromXml(Server.MapPath("~/App_Data/gauge.xml"));
            (ctrl.Gauges["myGauge"] as CircularGauge).Scales["myScale"].Value = (float)param;

            MemoryStream stream = new MemoryStream();
            ctrl.ExportToImage(stream, ImageFormat.Jpeg);

            stream.Seek(0, SeekOrigin.Begin);
            return new FileStreamResult(stream, "image/jpeg");
        }

ビューは次のようになります。

<div style="background: 1px solid Blue; width; 240px;">
<%  double data = Model.ListData[0].Percentage; %>
                    <img src='<%: Url.Action("RenderGauge", "GetDashBoard", new RouteValueDictionary(new { param = data })) %>'
                        alt="Gauge showing data" id="gaugeImg1" />

    </div>

繰り返しますが、これはすべてローカル マシンでは機能しますが、サーバーでは失敗します。src 属性はうまくレンダリングされているようです:

<img src='/CINet/CorporateDashBoard/GetDashBoard/RenderGauge?param=0.7'
                        alt="Gauge showing data" id="gaugeImg1" />

また、これが IIS 7、MVC 2 であることも付け加えたいと思います。インターネットで見つけた特別なハンドラーを追加しようとしましたが、成功しませんでした。

<handlers>
      <add type="DevExpress.Web.ASPxUploadControl.ASPxUploadProgressHttpHandler, DevExpress.Web.v11.2, Version=11.2.11.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" verb="GET,POST" path="ASPxUploadProgressHandlerPage.ashx" name="ASPxUploadProgressHandler" preCondition="integratedMode" />
      <add name="PNG Images" path="*.png" verb="*" type="System.Web.StaticFileHandler" resourceType="Unspecified" preCondition="integratedMode" />
 </handlers>

どんな助けでも大歓迎です!

4

1 に答える 1

0

質問してくれてありがとう、それは奇妙でした.吐き出すことはなく、直接そこに行くと「x」と代替テキストが表示されるが画像は表示されないという同じ結果が得られたからです. DevExpress の Gauge dll がサーバー上でローカルにコピーされていないことが判明しました。私はそれについて不平を言う例外を受け取ったと思っていたでしょうが、まあまあです。これが他の人に役立つことを願っています

于 2012-06-29T14:18:04.880 に答える