asp.net
  • asp.net-mvc
  • helper
  • url.action
  • 2009-11-18 16 views 11 likes 
    11

    これは私が尋ねた別の質問に多少関連していますが、私は別に質問しません。私はビューUrl.Actionはどのように動作しますか?Asp.net MVC?

    <td><img src='<%= Url.Action("DisplayImage" , "User" , new { id = item.id}) %>' alt="" /></td> 
    

    に次のようなものを配置した場合

    それは、これを表示することになっていますか?

    <td> 
        <img src='/User.mvc/DisplayImage?id=U00915441' alt="" /> 
    </td> 
    

    src-attributeの値は実際にはUserController GetImage Actionの結果に置き換えられますか?

    答えて

    9

    アクションの実行結果ではなく、URLを返すアクションへのパスを作成します。

    結果は次のようになります

    <td> 
        <img src='/User.mvc/DisplayImage?id=U00915441' alt="" /> 
    </td> 
    

    例コード。あなたのユーザモデルがバイト配列に格納されたイメージを持っていると仮定します。 LINQを使用していて、プロパティがBinaryの場合は、ToArray()メソッドを使用してバイト配列に変換します。ユーザーがログインし、GET要求を使用する必要がある属性に注意してください。

    [Authorize] 
    [AcceptVerbs(HttpVerbs.Get)] 
    public ActionResult DisplayImage(string id) 
    { 
        var user = ...get user from database... 
    
        return File(user.Image, "image/jpeg"); 
    } 
    

    }

    +0

    感謝。この方法で画像をどのように表示するのか知っていますか?私が画像を表示するために見たすべての例では、この方法が使用されていて、どのように動作するのか分かりません。私はmvcを初めて使っているので、これが本当に助けになるでしょう。 – zSynopsis

    +0

    DisplayImageというメソッド(またはGetImage、両方の方法がありますが、正しいものが1つしかありません)が必要です。このメソッドは、ユーザーのIDをパラメータとして受け取ります。 image/jpeg、image/gif、image/pngなど、画像フォーマットに適したMIMEタイプのContentResultを返す必要があります。あなたのアクションは、データベースからストリームに画像を取得し、このストリームからContentResultを構築し、MIMEタイプを設定します。 – tvanfosson

    +0

    ありがとうtvan。バイト配列に格納されたイメージのContentResultを構築する方法の例はありますか? – zSynopsis

    関連する問題