2013-02-28 112 views
0

我想在示例MVC项目中创建自定义的Html助手。为img创建强类型定制助手标记

这里是我到目前为止已经完成:

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中,当有人发布有关帮手的代码时,它只是一段代码而没有任何解释。

如果有人有创建强类型的自定义助手的教程,它给出了一个breif请分享链接。

回答

1

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

+0

+1哦。我只是忘了偷看这个问题。谢谢。你可以发布任何教程,如果你有创建强类型的自定义助手,它提供了一个在后台发生的事情breif。 – 2013-02-28 10:56:56

+0

请参阅[在ASP.NET MVC中自定义强类型HtmlHelpers](http://www.codeproject.com/Tips/389747/Custom-strongly-typed-HtmlHelpers-in-ASP-NET-MVC)以获取一些指导。 – 2013-02-28 11:01:29

+0

我已经看过了。我有一些关于msdn的视频。谢谢。接受为答案 – 2013-02-28 11:06:38