2015-04-14 1 views
1

Я пытаюсь отобразить изображение на странице просмотра, но оно не отображается в браузере. Вот мой код: MyChat.cshtmlИзображение не отображается на странице просмотра с использованием Url.Action

<td> 
<img src="@Url.Action("GetImage", "Mailbox", new { name = Session["Loginname"].ToString() })" id="photo"/> 
</td> 

Контроллер

public FileContentResult GetImage(string name) 
{ 
    byte[] cover = GetImageFromDataBase(name); 
    ViewData["image"] = cover; 
    if (cover != null) 
    { 
     return File(cover, "image/jpeg"); 
    } 
    else 
    { 
      return null; 
    } 
} 

public byte[] GetImageFromDataBase(string name) 
{ 
    RegisterLogic logic = new RegisterLogic(); 
    byte[] image = logic.GetImage(name); 
    return image; 
} 

Бизнес логика я использовал для извлечения значений из SQL Server 2008 R2 как:

public byte[] GetImage(string name) 
     { 
      con.ConnectionString = str; 
      cmd.Connection = con; 
      if (con.State == ConnectionState.Open) 
       con.Close(); 
      if (con.State == ConnectionState.Closed) 
       con.Open(); 
      cmd.CommandText = "Select Picture from InspiniaMessage where UserName='" + name + "'"; 
      cmd.CommandType = CommandType.Text; 


      SqlDataAdapter sda = new SqlDataAdapter(cmd); 
      DataTable dt = new DataTable(); 
      sda.Fill(dt); 
      Message m = new Message();   
      foreach (DataRow dr in dt.Rows) 
      { 
       Message mn = new Message(); 
       mn.Picture = (byte[])(dr["Picture"]); 
       m.Picture = mn.Picture;    

      }   
      return m.Picture; 
      con.Close(); 
     } 
    } 

У меня нет никакой ошибки, но изображение не вытесняется ys в представлении.

+0

увидеть это: http://stackoverflow.com/questions/29576699/how-to-return-url-string-from-controller- a-controller-in-mvc-4/29577189 # 29577189 –

ответ

0

Url.Action генерирует url для действий против контроллера, он никогда не вызывает действие, для вызова действия вам нужно будет использовать Html.Action() помощник.

когда вы пишете:

@Url.Action("ActionName","ControllerName")

это возвратного URL как строка, как это:

localhost/Controller/Action 

Используйте Html.Action(), как вы хотите, чтобы выполнить действие:

<img src="@Html.Action("GetImage", 
         "Mailbox", 
         new 
         { 
         name = Session["Loginname"].ToString() 
         })" 
    id="photo"/> 
+0

он дает ошибку 'Ошибка выполнения дочернего запроса для обработчика 'System.Web.Mvc.HttpHandlerUtil + ServerExecuteHttpHandlerAsyncWrapper'. не могли бы вы мне помочь. как разобраться. –

+0

положил точку останова на свое действие и посмотрел, –

Смежные вопросы