2013-02-04 4 views
3

Привет всем Я получаю мой _layout следующим образом, который работает в соответствии с моим требованием, но здесь есть несколько вещей, которые я поразил, т.е. я хотел бы отобразить соответствующее изображение для того, что я пишу следующимПоказать изображение из базы данных в _layout в mvc4

@if (Session["UserName"] != null) 
{ 
<div class="logged_in" id="user_navigation" runat="server"> 
<a title="Your Profile" href=""> 
<img alt="" src="@Url.Action("GetPhoto", new { photoId = Session["UserName"] })" height="50" width="50" class="photo" /> 
</a> 
</div> 
} 

Но это не показывает изображение в необходимости для меня, так может кто-нибудь помочь мне, что я хотел бы, чтобы отобразить изображение из базы данных после того, как пользователь вошел в также я хотел бы, чтобы отобразить session значения некоторый контроль тоже

Это мой код контроллера

public ActionResult GetPhoto(string photoId) 
     { 
      byte[] photo = null; 
      var v = db.tblUsers.Where(p => p.UserName == photoId).Select(img => img.Photo).FirstOrDefault(); 
      photo = v; 
      return File(photo, "image/jpeg"); 
     } 
+0

'Но это не сработало для me' - Что не получилось? Что случилось? Вы получили сообщение об ошибке? Не могли бы вы описать проблему, с которой вы сталкиваетесь в деталях? Вызывается действие «GetPhoto»? Почему вы передаете аутентифицированное имя пользователя в качестве параметра строки запроса - это огромная уязвимость системы безопасности? –

+0

Невозможно отобразить изображение согласно написанию – Dotnet

+1

Хорошо, вопросы: вызывает ли действие контроллера? что у вас есть внутри 'Session [" UserName "]'? Что вы видите в сгенерированном HTML? Есть ли тег 'img'? На что указывает его 'src'? –

ответ

6

У вас возникла проблема с синтаксисом <img>. Это должно быть так:

<img alt="" src="@Url.Action("GetPhoto","User", new { photoId = Session["UserName"].ToString() })" height="50" width="50" class="photo" /> 

Согласно разделу комментарии вы, кажется, использовали WebForms просмотра двигателя в Вашем коде (<%= Html.Encode(Session["UserName"]) %>).

Это, как говорится, у вас гораздо более серьезная проблема с этим кодом. Пользователь, прошедший проверку подлинности, никогда не должен передаваться как параметр. Это огромная уязвимость системы безопасности. Так начните, избавившись от него:

<img alt="" src="@Url.Action("GetPhoto", "User")" height="50" width="50" class="photo" /> 

, а затем внутри вашего действия контроллера вы можете получить его:

public ActionResult GetPhoto() 
{ 
    string user = Session["UserName"] as string; 
    byte[] photo = db 
     .tblUsers 
     .Where(p => p.UserName == user) 
     .Select(img => img.Photo) 
     .FirstOrDefault(); 
    return File(photo, "image/jpeg"); 
} 
Смежные вопросы