2011-07-28 4 views
2

하이퍼 링크 대신 클릭하여 @ Html.actionLink 이미지를 만들 수있는 방법이 있습니까? 현재 우리는 onclick 속성이 코드 뒤에 링크되어 있으므로 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()); 
     } 
    } 
}