0

mysqlデータベースのカテゴリテーブルのLongblobデータ型のフィールドcategoryImageに手動で画像を保存しました。データベースからデータを取得するために、devart linq-mysql モデルを追加しました。

リピーターコントロールにlinq データソースを追加し、データベースから BLOB データ型のイメージを直接取得したいと考えています。このコードを書くとき
<%# Eval("CategoryImage" %>

出力として System.Byte[] を取得します。メソッドを使用してバイト配列を画像に変換する必要があるという提案がありました

    public System.Drawing.Image byteArrayToImage (System.Byte[] ByteInArray)
    {
        MemoryStream ms = new MemoryStream(ByteInArray);
        System.Drawing.Image returnimage = System.Drawing.Image.FromStream(ms);
        return returnimage;

    }              

このコードを書いたとき、いくつかの無効な引数<%# byteArrayToImage(Eval("CategoryImage") %> を持つエラーが表示されます。byteArrayToImage(btye[])誰でもこの問題について私を助けることができます。

前もって感謝します..

4

1 に答える 1

1

まず、あなたのタグは適切に形成されていないようです:

<%# byteArrayToImage(Eval("CategoryImage") %>

次のようにする必要があります。

<%# byteArrayToImage(Eval("CategoryImage")) %>

また、Evalメソッドは を返しますobjectbyteArrayToImageメソッド パラメーターの型はSystem.Byte[]であるため、適切な型にキャストする必要があります。

byteArrayToImageまた、メソッドの戻り値をどの要素に適用するのかを明確にした方がよいでしょう。のインスタンスでは正しく動作しない場合がありますSystem.Drawing.Image

<asp:Image>に基づいてコントロールを作成しようとしている場合System.Drawing.Image、そのコントロールは URL を介した画像の読み込みのみをサポートしているため、 機能しません。

これに代わる方法は、画像のカスタム HTTP ハンドラーを作成するか、画像コンテンツを含むファイルを作成して、<asp:Image>コントロールに URL を与えることです。

于 2013-03-05T22:28:21.347 に答える