2012-02-10 12 views
2

かみそりヘルパーメソッドで行う方法は?アクションイメージヘルパーメソッドを使用したMVC3カミソリのリンク

下記のリンク先の質問の回答は延長方法を使用しています。 Action Image MVC3 Razor

+0

私はちょうどグーグルドしました!私はどこから始めるべきかわかりません。この解決策は、バリアンスの依存関係のためにヘルパーメソッドでコピーすることはできません。 – Ante

答えて

2

私は拡張メソッドが適切でない理由は本当にわからないんだけど、このような何かが動作するはずです:

あなたの走行距離は変更になる場合がありますので、ちょうど私の頭の上からです
@helper ActionImage(string action, object routeValues, string imagePath, string alt) { 
    <a href="@Url.Action(action, routeValues)"> 
     <img src="@Url.Content(imagePath)" alt="@alt"> 
    </a> 
} 

。また、拡張メソッドでなく、@functions { }ブロックとして質問に提供されている実装を使用することもできます。

+0

@ Url.Somethingを使用できません。何かを含める必要がありますか? – Ante

+0

@ System.Web.Mvc.UrlHelper.Actionは役に立ちません – Ante

+0

@Anteこのヘルパーはどこに定義されていますか? 'WebViewPage 'や 'App_Code'から継承したビューでは? –

0
ここ

小型のHTMLヘルパーについての記事とどのようにHTMLヘルパーに

http://www.sexyselect.net/blog/post/2011/08/16/Writing-a-Razor-MVC3-HTML-Helpers

http://www.aspnetwiki.com/page:creating-custom-html-helpers

サンプルコードを別の例を、それをintergrateに私の画像HTMLヘルパーの簡単な例であります

/// <summary> 
     /// Insights the traffic light image. 
     /// </summary> 
     /// <param name="html">The HTML.</param> 
     /// <param name="trafficLight">The traffic light.</param> 
     /// <returns>Image for the current traffic light. If not recognised writes name ot he light.</returns> 
     public static MvcHtmlString InsightTrafficLightImage(this HtmlHelper html, TrafficLight trafficLight) 
     { 
      StringBuilder result = new StringBuilder(); 
      string color = string.Empty; 
      string hoverText = string.Empty; 
      switch (trafficLight) 
      { 
       case TrafficLight.Amber: 
        { 
         color = "Yellow"; 
         hoverText = "Work in progress"; 
         break; 
        } 
       case TrafficLight.Green: 
        { 
         color = "green"; 
         hoverText = "Complete"; 
         break; 
        } 

       case TrafficLight.Red: 
        { 
         color = "red"; 
         hoverText = "Not yet started"; 
         break; 
        } 
       case TrafficLight.Black: 
       case TrafficLight.Unknown: 
       default: 
        { 
         break; 
        } 
      } 

      if (!string.IsNullOrEmpty(color)) 
      { 
       TagBuilder img = new TagBuilder("img"); 
       img.MergeAttribute("src", string.Format("/Content/images/traffic_light_{0}.gif", color)); 
       img.MergeAttribute("alt", hoverText); 
       img.MergeAttribute("title", hoverText); 
       result.Append(img.ToString()); 
      } 
      else 
      { 
       result.Append(Enum.GetName(typeof(TrafficLight), trafficLight)); 
      } 
      return MvcHtmlString.Create(result.ToString()); 
     } 

あなたはそれが役に立ったと思っています

+0

私はヘルパーメソッドの解決策を見つけようとしています。同様のメソッドは引用リンクに記述されていますが、@helperメソッドは使用しません。 – Ante

関連する問題