2011-07-28 11 views
2

ハイパーリンクの代わりに@ Html.actionLinkをクリックする方法はありますか?現在、私たちには古いコードがリンクされているため、コントローラにリンクするリンクに変換する必要があります。これは、MVC3にもう存在しないコードビハインドではありません。MVC 3画像ボタン

答えて

1

@ Html.actionLinkをハイパーリンクではなくクリックするようにする方法はありますか?

いいえ、あなたが好きなように画像を生成するcustom HTML helperと書くことができます。実際には私はCSSクラスを適用して、background-imageを適用し、幅と高さを固定したアンカーを薄くすることができると思います。私はあなたがテキスト=> IIRC Html.ActionLinkで何をするのか分からないだけで、空でないlinkTextパラメータを最初の引数として渡すように強制します。だから最終的にカスタムHTMLヘルパーは悪い考えのようには見えません。

+0

ディミトロフが言ったように、あなたは、このためのカスタムヘルパーを書くことができますが、あなたはそれだけで一つのボタンを交換する場合は、たくさんそれを使用しようとしている場合、私はちょうど使用することになり、私は唯一のそれとわざわざ通常のアンカータグを使用して、@ Html.ActionLinkのようにコントローラ/アクションを指示するhrefバイアル@ Url.Action()を設定します。 –

1
@using (Html.BeginForm()) 
{ 
    <p> 
    <input type="image" value="submit" src="../../Images/login_button.png" alt="submit Button"> 
    </p> 
} 
0
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Web; 
using System.Web.Helpers; 
using System.Web.Mvc; 

namespace SMART.Infrastructure 
{ 
    public static class Html 
    { 
     /// <summary> 
     /// Creates and Action link with a clickable image instead of text. 
     /// </summary> 
     /// <param name="helper"></param> 
     /// <param name="controller">Controller</param> 
     /// <param name="action">Action</param> 
     /// <param name="parameters">Parameters</param> 
     /// <param name="src">Image source</param> 
     /// <param name="alt">Alternate text(Optional)</param> 
     /// <returns>An HTML anchor tag with a nested image tag.</returns> 
     public static MvcHtmlString ActionImage(this HtmlHelper helper, String controller, String action , Object parameters, String src, String alt = "", String title = "") 
     { 
      TagBuilder tagBuilder = new TagBuilder("img"); 
      UrlHelper urlHelper = new UrlHelper(helper.ViewContext.RequestContext); 
      String url = urlHelper.Action(action, controller, parameters); 
      String imgUrl = urlHelper.Content(src); 
      String image = ""; 
      StringBuilder html = new StringBuilder(); 

      // build the image tag. 
      tagBuilder.MergeAttribute("src", imgUrl); 
      tagBuilder.MergeAttribute("alt", alt); 
      tagBuilder.MergeAttribute("title", title); 
      image = tagBuilder.ToString(TagRenderMode.SelfClosing); 

      html.Append("<a href=\""); 
      html.Append(url); 
      html.Append("\">"); 
      html.Append(image); 
      html.Append("</a>"); 

      return MvcHtmlString.Create(html.ToString()); 
     } 
    } 
}