我在layout.cshtml页面中有一个用户个人资料图片,该页面显示在整个页面中。现在的问题是图像显示在母版页中,但导航到子页面时却没有显示。请帮助我。
登录控制器显示图像:
public FileContentResult DisplayImage(int userId)
{
byte[] imageByteData = null;
try
{
using (var db = new AdminDb())
{
var userImage = (from usr in db.User.AsNoTracking()
where usr.UserId == userId
select usr.UserImage).FirstOrDefault();
if (!string.IsNullOrEmpty(userImage))
{
imageByteData = System.IO.File.ReadAllBytes(userImage);
return File(imageByteData, "image/jpeg");
}
else
{
imageByteData = System.IO.File.ReadAllBytes(Server.MapPath(Url.Content("~/Content/UserProfileImages/defaultimage.png")));
return File(imageByteData, "image/jpeg");
}
}
}
catch (Exception)
{
return File(imageByteData, "image/jpeg");
}
}
用于保存路径的UserController。(在此将imae保存到外部文件夹并在db中保存路径)
if (file.ContentLength > 0)
{
var setting = db.Setting.AsNoTracking().Where(x => x.Code == OtherConstants.UserPhotoPath)
.Select(x => new
{
SettingId = x.SettingId,
SchemaDefinitionId = x.SchemaDefinitionId,
Value = x.Value
}).FirstOrDefault();
string path = setting.Value;
//Getting the path + the image name
var paths = Path.Combine(path + fileName);
user.UserImage = paths;
//Checking whether the uploaded file is already exists and if not exists save the details
if (!System.IO.File.Exists(paths))
{
file.SaveAs(paths);
}
我的Layout.cshtml页面(使用动作控制器的地方)
<img id="imgLogin" class="lblLogin UserProfileDeatils" src="@Url.Action("DisplayImage", "Login", new { userId = Assyst.PanERP.Common.AppSession.Common.UserID })" />
</div>
答案 0 :(得分:0)
根据您提问中提供的信息,我认为问题是由两个原因之一引起的
您可以通过在返回图像的方法中放置断点(使用登录控制器)来确认这一点,并检查在浏览器中加载子页面时是否调用该方法。如果未触及该方法,则可以确认问题是由于上述原因之一。