1

現在、ajax jquery を使用して img src に動的な値を設定しています。とにかく画像はサーバーに送られるので、コードのjquery部分を切り取りたいと思います

私が現在持っているもの

Javascript (これは私がゴミ箱に入れたいコードです)

var Onload= function () {
    $.each($('.image'), function (x, item) {
        $.ajax({
            url: '/MyController/MyAction/?imageName=' + $(item).attr('data-image-name'),
            type: 'GET',
            dataType: 'html',
            success: function (data) {
                $(item).attr('src', data);
            },
            error: function (jqXHR, textStatus, errorThrown) {

            }
        });
    });
};

サーバー側コード

public string MyAction(string imageName)
{
    return imageUrl = _myService.GetImageUrl(imageName);
} 

HTML

@foreach(var i in Model)
{
    <img src="" class="image" data-image-name="@i.Name"/>//this is current html
    //<img src="/MyController/Myaction/imageName" + @i.Name />
    //i am trying to get something like second img tag
    //but if i do this it populates with the controller/action url, 
    //not the result of the action method url
}

私はビューモデルとその種のものについて知っています。「この情報をモデル/ビューモデルに入れてください」という答えは探していません。

4

1 に答える 1

0

いくつかのオプションがあります。

-ViewModelに入れます(正直なところ、私の意見では最もクリーンなオプションです)

- 次のようにします。

@foreach(var i in Model)
{       
    <img src="@_myService.GetImageUrl(@i.Name)"/>
}

-URL ではなく画像を返すアクションを作成します。私はそれがあなたが探しているものに最も近いかもしれないと思います:

public ActionResult MyAction(string imageName)
{
    var path= Server.MapPath(_myService.GetImageUrl(imageName));
    return base.File(path, "image/jpeg");
}

<img src="/MyController/Myaction/?imageName=@i.Name" />
于 2013-07-15T18:30:41.853 に答える