0

私のウェブサイトでは、ビットマップを動的に生成しています。ページにオーバーフローが発生しないように、ブラウザの幅と高さに応じてレンダリングする必要があります。

画像を正常に作成してレンダリングしましたが、ブラウザの幅と高さを取得して、画像レンダリングのアクションに渡す方法がわかりません。

意見:

@{
ViewBag.Title = "Index";
}
<h2>Home</h2>
<br />
<img src="@Url.Action("Image", new { height = , width = })" alt="image" usemap="#clickMap" height="" width="" />

コントローラ:

public ActionResult Image(int width, int height)
{
    MemoryStream stream = new MemoryStream();
    var image = DynamicImages.ImageGeneration.GetWorkflow(width, height);

    image.Save(stream, ImageFormat.Png);

    return File(stream.ToArray(), "image/png");
}

画面の高さを取得するためにBrowser.jsというファイルにjQuery関数を入れましたが、これを参照する方法がわかりません。

function getWidth() {
    return $(window).width();
}

誰か助けてもらえますか?

4

3 に答える 3

1

次のようなことを試してみてください。

$("img-selector").attr("src", "@Url.Action("Image")" + "?height=" + getHeight() 
    + "&width=" + getWidth());
于 2012-04-18T11:47:14.933 に答える
1

私はこれを機能させることができました。ページに画像要素を追加してソースを変更するのではなく、単純に関数で画像タグを生成し、それをページの div に追加しました。アクションの呼び出しに関しては、URL呼び出しをハードコーディングしました(これはとにかく @Url.Action() が行うことです)、これは機能します これが私のコードです:

@{
ViewBag.Title = "Index";
}
<h2>Home</h2>
<br />
<script type="text/javascript">

    $(document).ready(function () {
        renderWorkflow();
    });

    function renderWorkflow() {
        var width = $(window).width();
        var height = $(window).height();
        var imageLink = "<img id=\"workflow\" src=\"/Home/WorkflowImage?width=" + width + "&height=" + height + "\" alt=\"Workflow Image\" />";

        $("#workflowImage").html(imageLink);
    }

</script>
<div id="workflowImage">
    <p>Java script must be enabled in order to render the workflow</p>
</div>
<map id="clickMap" name="clickMap">
</map>
于 2012-04-19T11:52:15.000 に答える
0

これを行うためにajaxリクエストを行うことができます

<script type="text/javascript">
  var Height = //get height
  var Width = // get width

 $.get('@Url.Action("Image", "Controller")', { width: width, height: Height}, function (data) {              

        });
</script>
于 2012-04-18T11:45:43.783 に答える