asp.net-mvc-3 - Razor 和 HTML 助手

标签 asp.net-mvc-3

我正在尝试移植旧的 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/

相关文章:

asp.net-mvc-3 - MVC 3 中的 ModelState 类是什么?

ASP.Net MVC 3 Controller Action 和打开新窗口

asp.net-mvc - 从MVC中的资源获取[Display]属性值

c# - 如何将数据库表列映射到 Dapper .Net 中的类属性

c# - 存储来自1个ActionResult的js值以在另一个ActionResult中使用

Asp.Net MVC3,返回成功 JsonResult

asp.net-mvc - DisplayFormat 未应用于十进制值

asp.net-mvc-3 - VSTS 错误序列化异常

asp.net-mvc - 如何使用 Html.ActionLink 通过 MVC3 指定准确的 URL

c# - (OAuthException - #2500)必须使用事件访问 token 来查询有关当前用户的信息