我在扩展HtmlHelper类以渲染图像标签时遇到问题
我只是写了这段代码
namespace Mace_CrmSystem
{
public static class ExtendedHelper
{
public static TagBuilder HaidarImage(this HtmlHelper instance, string src) {
TagBuilder inst = new TagBuilder("img");
inst.MergeAttribute("src", src);
return inst;
}
}
}
在索引视图中,我编写了这段代码
@Html.HaidarImage("http://haidar.ws/wp-content/uploads/2014/07/ipaduse.jpg");
但是问题是,当视图呈现标记时,它不会将其呈现为Hrml标记,而是将其呈现为普通文本,因此结果是这样的
<img src="http://haidar.ws/wp-content/uploads/2014/07/ipaduse.jpg"></img>;
另一个问题是,我试图在Web.config页面内添加名称空间以在所有页面上都可用,但是intellisense不会显示扩展方法,直到我在视图页面本身上明确声明它为止。
所以请任何人帮我解决我的问题。
最佳答案
您应该从HtmlHelper扩展方法返回一个IHtmlString
,以便输出不是经过HTML编码的,因为它是不应再次编码的HTML标记。例如
public static IHtmlString HaidarImage(this HtmlHelper instance, string src)
{
TagBuilder inst = new TagBuilder("img");
inst.MergeAttribute("src", src);
return new HtmlString(inst.ToString(TagRenderMode.SelfClosing));
}
要修复在所有视图中都可用的方法,您需要将类的名称空间添加到Views文件夹内的web.config中。