这是我的观点:
<img src="@{Html.RenderAction("GetUserProfileImage", "Home", new { area = "" });}" alt="" />
和我的控制器:
public ActionResult GetUserProfileImage() {
string defaultresult = "http://MyProject.dev/Content/img/sample_user.png";
if (Member.LogIn()) {
DBFile file = GetMemberPicFromDB();
return File(file.Content, file.ContentType);
} else {
return Content(defaultresult);
}
}
所以当我从DB获取文件时,每件事情都没问题,但是当我返回URL(return Content
)时,渲染的html会有一些不好的结果,如下所示:
<imghttp: myproject.dev="" content="" img="" sample_user.png="" src="" alt="">
<div>
some content from outside of img tag added here
</div>
</imghttp:>
此外,我将视图更改为:
<img src="http://myproject.dev/Content/img/sample_user.png" alt="" />
一切都很好,
问题出在哪里?似乎返回Content无法将简单字符串返回到src
属性,那么你对返回简单字符串的建议是什么?
如果不可能
我认为通过URL(http://myproject.dev/Content/img/sample_user.png
)和return File()
获取文件时从DB返回,但是如何通过此URl(http://myproject.dev/Content/img/sample_user.png
)获取控制器中的文件?< / p>
以及任何其他建议,如果你有?
答案 0 :(得分:1)
您应该在两种情况下都从控制器操作返回一个文件,并在您的图像中引用此操作,如下所示:
<img src="@Url.Action("GetUserProfileImage", "Home", new { area = "" })" alt="" />
然后在您的控制器操作中返回两种情况下的文件结果:
public ActionResult GetUserProfileImage()
{
if (Member.LogIn())
{
DBFile file = GetMemberPicFromDB();
return File(file.Content, file.ContentType);
}
else
{
string image = Server.MapPath("~/content/img/sample_user.png");
return File(image, "image/png");
}
}