【问题标题】:creating strongly typed custom helpers for img tag为 img 标签创建强类型自定义助手
【发布时间】:2013-02-14 12:06:25
【问题描述】:

我正在尝试在我的示例 MVC 项目中创建自定义 Html 助手。

这是我到目前为止所做的:

public static MvcHtmlString ImageFor<TModel,TValue>(this HtmlHelper<TModel> htmlHelper,
            Expression<Func<TModel,TValue>> expression,
            string alternateText,
            object htmlAttributes) 
        {
            ModelMetadata metadata = ModelMetadata.FromLambdaExpression(expression, htmlHelper.ViewData);
            string name = ExpressionHelper.GetExpressionText(expression);

            TagBuilder tagBuilder = new TagBuilder("img");
            tagBuilder.MergeAttribute("src", metadata.Model.ToString());
            tagBuilder.MergeAttribute("alt", alternateText);
            tagBuilder.MergeAttribute("name", name);

            return MvcHtmlString.Create(tagBuilder.ToString(TagRenderMode.SelfClosing));
        }

在我的控制器中,我将图像路径传递给属性(imgUrl)。

当我尝试为其创建标签时,它不会在浏览器上给我image,而是始终显示替代文本。

这是它的渲染标记。

<img name="imageUrl" alt="alernate" src="C:\Users\Administrator\Desktop\down.png"/>

虽然我已经为 @Html.Image 完成了松散类型的帮助程序,但它工作得很好!。

我的代码出了什么问题。

我搜索了很多关于创建 Strongly Typed Helpers 的内容,但没有一个教程向我解释当我们访问强类型帮助器时发生了什么。

我也在 SO 中看到过帖子,当有人发布有关帮助程序的代码时,它只是一段代码,没有任何解释。

如果有人有创建强类型自定义助手的教程,请分享链接。

【问题讨论】:

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


    【解决方案1】:

    您的src 属性指向您的本地驱动器。那是行不通的。您的浏览器显示替代文本,因为它找不到图像。您应该改用图像的 URL。例如src="/images/down.png"

    【讨论】:

    • +1 哦。我只是忘了窥视那个问题。谢谢。如果您有创建强类型自定义助手的教程,您能否发布任何教程,以简要说明后台发生的事情。
    • 请参阅 Custom strongly-typed HtmlHelpers in ASP.NET MVC 了解一些指南。
    • 我已经看过了。我在msdn上有一些视频。谢谢。接受作为答案
    • 这里是关于强类型助手的另一个资源。它有代码示例和插图。 simple-talk.com/dotnet/asp.net/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-10-20
    • 2015-08-01
    • 1970-01-01
    • 2019-11-07
    • 2017-04-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多