2013-02-28 115 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