2010-07-30 2 views
1

저는 Mvc을 처음 사용하고 Ajax Action 링크로 이미지를 사용하려고 시도했습니다. 나는 "교체"방법은 내가 사용 버전에 존재하지 않는 그러나 나는 스티븐 발터에 의해 게시 된 생각 도우미 ...Asp.net Mvc2 Ajax ImageActionLink Helper

using System.Web.Mvc; 
using System.Web.Mvc.Ajax; 

namespace Helpers 
{ 
    public static class ImageActionLinkHelper 
    { 

     public static string ImageActionLink(this AjaxHelper helper, string imageUrl, string altText, string actionName, object routeValues, AjaxOptions ajaxOptions) 
     { 
      var builder = new TagBuilder("img"); 
      builder.MergeAttribute("src", imageUrl); 
      builder.MergeAttribute("alt", altText); 
      var link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions); 
      return link.Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing)); 
     } 

    } 
} 

을 발견했다. (아마도 Mvc2 문제는 그의 연락처 관리자 응용 프로그램이 MVC1 응용 프로그램이라고 생각하기 때문에 ??) 문서를 통한 빠른 검색과 "대체"메서드가 사용되지 않고 "MvcHtmlString.Create()"를 사용하려고 시도했음을 발견했습니다. 이 도우미에서 해당 메서드를 사용하여 여러 조합을 만들었고 이미지로 렌더링 할 링크를 얻을 수 없었습니다. 나는 올바른 액션/컨트롤러와 img 태그를 가리키는 링크를 일반 텍스트로 가져 오거나 그 반대의 경우도 링크로 평범한 텍스트로 올바르게 렌더링 한 것입니다.

거의 모든 콤보에서 사이드 바를 사용 했으므로이 특별한 도우미에 나열된 표준 문자열 대신 MvcHtmlString 유형을 반환했습니다.

답변

3

이것은 아마도 MvcHtmlString이 아직 존재하지 않았던 때입니다. 그것이 말하는 때문에 나는 도우미를 추가 할 때

var link = helper.ActionLink("[replaceme]", actionName, routeValues, ajaxOptions).ToString(); 
return link.Replace("[replaceme]", builder.ToString(TagRenderMode.SelfClosing)); 
+0

, 프로젝트 실 거예요 구축 : 당신은 그것이 처음부터 작업을했는데 실제 문자열을 얻을 필요가, Replace() 방법의 상점이 일을 할 수 있어야한다 Replace() 메서드가 없습니다. –

+0

예, 그것이 내가 말한 것입니다. Helper.ActionLink()에서 얻은 결과에 대해 ToString()을 호출해야합니다. – Necros

+0

죄송합니다. 첫 줄 끝 부분에서 ToString()을 보지 못했습니다. 지금 당장 작동합니다! 감사합니다. –