Image Helper不渲染图像(MVC3)

时间:2013-05-02 06:08:00

标签: asp.net-mvc-3 razor html-helper

我正在尝试创建一个图像帮助器来渲染图像,但我的助手不会渲染图像。所有我能看到的内容都显示在下面的屏幕截图中。任何人都可以帮助发现原因吗?请帮忙。这是我的代码。

助手类

using System.Configuration;
using System.Web.Mvc;

namespace CMS.Helpers
{
    public static class ImageHelper
    {

        public static string Image(this HtmlHelper htmlHelper, string fileName, string id, string alt, string contentPath)
        {
            var imgDirectory = ConfigurationManager.AppSettings["imageDirectory"];
            var imagePath = string.Format("{0}{1}", imgDirectory, contentPath);
            var file = string.Format("{0}{1}", imagePath, fileName);
            var img = new TagBuilder("img");
            img.MergeAttribute("src", file);
            img.MergeAttribute("alt", alt);
            return img.ToString(TagRenderMode.SelfClosing);
        }
    }
}

查看

@Html.Image("TestImage.jpg", "testImg", "TestImg", "/Content/Uploads/MySiteImages")

的Web.Config

<add key="imageDirectory" value="http://localhost:49191"/>

截图 enter image description here

在浏览器上输入图片网址"http://localhost:49191/Content/Uploads/MySiteImages/TestImage.jpg"时,我发现图片存在。

1 个答案:

答案 0 :(得分:1)

您的问题是Razor会自动对每个string进行HTML编码,该@会使用Html.Raw符号写入回复。

您可以使用@Html.Raw(Html.Image("TestImage.jpg", "testImg", "TestImg", "/Content/Uploads/MySiteImages")) 方法关闭自动编码:

MvcHtmlString

或者您可以从助手返回Html.Raw。这是ASP.NET MVC中更惯用的方式,在这种情况下,razor不会对您的HTML进行编码,因此您无需记住使用public static MvcHtmlString Image(this HtmlHelper htmlHelper, string fileName, string id, string alt, string contentPath) { var imgDirectory = ConfigurationManager.AppSettings["imageDirectory"]; var imagePath = string.Format("{0}{1}", imgDirectory, contentPath); var file = string.Format("{0}{1}", imagePath, fileName); var img = new TagBuilder("img"); img.MergeAttribute("src", file); img.MergeAttribute("alt", alt); return MvcHtmlString.Create(img.ToString(TagRenderMode.SelfClosing)); }

{{1}}