0

这是我的观点:

<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(by 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="" />

而且一切正常,

那么问题出在哪里?似乎返回内容无法将简单字符串返回到src属性,那么您对返回简单字符串有什么建议?

如果那不可能

我想从数据库返回时通过 URL( http://myproject.dev/Content/img/sample_user.png) 和return File()Like 获取 File,但是如何通过这个 URl( http://myproject.dev/Content/img/sample_user.png) 获取控制器中的文件?

如果你有任何其他建议?

4

1 回答 1

1

在这两种情况下,您都应该从控制器操作中返回一个文件,并在您的图像中引用此操作,如下所示:

<img src="@Url.Action("GetUserProfileImage", "Home", new { area = "" })" alt="" />

然后在您的控制器操作中,在两种情况下都返回 File 结果:

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");
    }
}
于 2012-11-17T13:10:09.377 回答