2012-11-21 80 views
0

這是來自數據庫的byte[]圖像,我需要調用一個動作。使用asp.net在自舉popover中插入圖像mvc

<td><a href="#" rel="popover" class="user" data-content=" 
<h3>@hItem.m_sUsername</h3> 
<img [email protected]("Show", "Image", new {id = "1"}) alt="Image" /> 
<p>First name: @hItem.m_sFirstname</p> 
<p>Last name: @hItem.m_sLastname</p>" 
+0

如果我正確理解你的問題,你想通過調用你顯示的動作在頁面上顯示圖像(存儲在數據庫中)? – jwaliszko

+0

是的,@JaroslawWaliszko,因爲它是byte []圖片,我需要用動作來做到這一點。 – gormit

回答

0

好了,你的邏輯應該是這樣的:

public class ImageController 
{ 
    [HttpGet] 
    public virtual ActionResult Show(int id) 
    { 
     var byteArray = YourDatabaseAdapter.LoadImage(id); 
     var mimeType = GetMimeType(fileName); 
     return base.File(byteArray, mimeType, fileName); 
    } 

    private static string GetMimeType(string fileName) 
    { 
     var mimeType = "application/unknown"; 
     var extension = Path.GetExtension(fileName); 
     if (extension != null) 
     { 
      var ext = extension.ToUpperInvariant(); 
      var regKey = Registry.ClassesRoot.OpenSubKey(ext); 
      if (regKey != null && regKey.GetValue("Content Type") != null) 
      { 
       mimeType = regKey.GetValue("Content Type").ToString(); 
      } 
     } 
     return mimeType; 
    } 
} 

通用GetMimeType功能基礎上,從Windows註冊表中採取的文件擴展名設置你的內容類型的HTTP標頭。

EDIT(HTML內容):

在傳遞的HTML代碼的內容的情況下,jQuery的.html();上調用外部DIV與所述內容的HTML應該工作在the reference描述:

$('.user').popover({ 
    html : true, 
    content: function() { 
     return $('#data-content-wrapper').html(); 
    } 
}); 
+0

謝謝Jaroslaw,但我的第一個問題是調用這個動作,它在bootstrap數據內容標籤內。我甚至不知道如何編寫正則語法。我在引號內引用(來自數據內容)。 – gormit

+0

爲了在數據內容中放置html,請看這裏:http://stackoverflow.com/questions/8875376/is-it-possible-to-use-a-div-as-content-for-twitters-popover – jwaliszko

+0

...現在我用jquery獲取內容而不是數據內容,並且我會嘗試你的動作方法。 – gormit