我正在尝试移植旧的 HTML.Image 帮助程序,我相信每个人都曾经使用过它,但我遇到了问题。以下编译正常:
@Html.Image("my-id", "~/Content/my-img.png", "Alt Text")
但是当我尝试在 View 中使用它时,它只是写道:
<img alt="Alt Text" id="my-id" src="/content/my-img.png" />
并且不显示图像。任何人都可以提供帮助吗?
这是我正在使用的 HTML.Image 帮助程序代码:
public static class ImageHelper
{
public static string Image(this HtmlHelper helper, string id, string url, string alternateText)
{
return Image(helper, id, url, alternateText, null);
}
public static string Image(this HtmlHelper helper, string id, string url, string alternateText, object htmlAttributes)
{
// Instantiate a UrlHelper
var urlHelper = new UrlHelper(helper.ViewContext.RequestContext);
// Create tag builder
var builder = new TagBuilder("img");
// Create valid id
builder.GenerateId(id);
// Add attributes
builder.MergeAttribute("src", urlHelper.Content(url));
builder.MergeAttribute("alt", alternateText);
builder.MergeAttributes(new RouteValueDictionary(htmlAttributes));
// Render tag
var ret = new MvcHtmlString(builder.ToString(TagRenderMode.SelfClosing));
return ret.ToHtmlString();
}
}
最佳答案
Razor View 引擎将自动对 @
呈现的 HTML 转义字符串进行处理。 - 块。
要渲染实际的 HTML,您需要编写一个 IHtmlString
在 @
中实现-堵塞。
更改您的方法以返回 HtmlString
而不是 string
.
关于asp.net-mvc-3 - Razor 和 HTML 助手,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4707518/