大家好,我正在享受我的_layout
如下,它按照我的要求工作,但是这里有几件事让我震惊,即我想显示我写的相应图像,如下所示
@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");
}
您似乎有问题<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");
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)