0

ASP.NET MVC 3 では、現在、次のコードを使用してオンザフライでサムネイル画像を生成しています。

public void GetImageThumbnail(string imageName)
{

   WebImage wbImage = new WebImage("~/assets/images/gallery/"+imageName+".jpg");

   int width = 220;

   wbImage.Resize(width, (int)((double)wbImage.Height * width / wbImage.Width));

   wbImage.FileName = imageName+"_small.jpg";

   wbImage.Write();

}

次のようにビューに表示します。

<img src="@Url.Action("GetImageThumbnail", new {imageName = "motherboard"})" alt="" />

ビューの画像サイズを制御し、完全な<img>タグを最初から生成するにはどうすればよいでしょうか? 画像のサイズを指定し、とプロパティを<img>含むタグを取得する必要があります。widthheight

ありがとう。

4

1 に答える 1

0

私が最初に考えたのは、すべての作業を行う独自の HTML ヘルパー メソッドを作成することです。あなたが消費するもの:

    @Html.ThumbnailImg("motherboard")

このメソッドはサムネイルの機能を果たし、必要な完全なマークアップを出力できます。詳細: http://www.asp.net/mvc/tutorials/older-versions/views/creating-custom-html-helpers-cs。それだけの価値があるため、私は拡張メソッドの設計を好みます。他の開発者にとっては、より口当たりが良いようです。

更新: 以前は考えもしなかった鶏と卵の関係が少しあります。おそらく次のようなものです:

    public static MvcHtmlString ThumbnailImg(
        this HtmlHelper html,
        UrlHelper url,
        String imageName,
        String elementID,
        String altText)
    {

        var img = new TagBuilder("img");
        if (String.IsNullOrEmpty(elementID) == false) img.MergeAttribute("id", elementID);
        if (String.IsNullOrEmpty(altText) == false) img.MergeAttribute("alt", altText);

        // Generate and cache thumnail here, determining height and width
        // ... 

        var src = url.Action("GetImageThumbnail", new { imageName = imageName });
        img.MergeAttribute("height", height);
        img.MergeAttribute("width", width);

        img.MergeAttribute("src", src);
        return MvcHtmlString.Create(img.ToString(TagRenderMode.SelfClosing));
    }
于 2013-05-28T16:26:21.833 に答える