2009-10-04 8 views
0

ASP.NET MVC 프레임 워크를 사용하고 있는데 ajax 도우미 메서드를 만들고 싶습니다. 기본적으로이 도우미는 ActionLink처럼 작동하지만 링크 텍스트를 인코딩하지 않습니다. HtmlHelper로 작성하는 것은 다소 간단합니다. GenerateLinkInternal을 직접 작성해야합니다. GenerateLink의 Ajax 버전이 내부적으로 ToJavascriptString (GenerateAjaxScript를 통해)을 간접적으로 호출하므로 MVC 어셈블리 외부에서 호출 할 수 없기 때문에 이것은 AjaxHelpers에서 작동하지 않습니다. 나는 확실히 모든 것을 다시 쓸 수 있지만 잔인한 방법 인 것 같습니다. 더 좋은 방법이 있습니까?ASP.NET MVC 프레임 워크에서 AjaxOptions에서 결과 JavaScript를 얻는 방법은 무엇입니까?

궁극적으로,이 헬퍼는 BeginForm과 같은 역할을하여 HTML 블록을 둘러 쌉니다. 아직 보지 못했지만 ToJavascriptString도 사용한다고 가정합니다. 나는 웹을 검색해 보았고, MVC 소스 코드를 살펴보면서 내가 완전히 잘못된 경로에 있는지 궁금해하기 시작했다.

감사

업데이트이 : 내가 더이 문제를 보면, 더 나는 단순히 해결책이 없다 생각합니다. 누구든지 MVC 프레임 워크를 작성한 사람은 자신의 도우미를 작성하는 데 도움이 생각하지 않았다!

업데이트 : 나는 거의 AjaxOptions 기능을 복제하는 도우미를 작성했습니다.

+0

업데이트에 대한 의견 : ASP.NET MVC 프레임 워크를 담당하는 Phil Haack (http://www.haacked.com/)에게 개선 방법에 대한 제안을 이메일로 보내주십시오. 운이 좋으면 ASP.NET MVC 2 =에서이 방법을 더 간단하게 만들 수 있습니다.) –

답변

0

대신 Url.Action()을 사용하여 자신의 도우미를 처음부터 작성 (즉, Html.ActionLink()/Ajax.ActionLink() 방법 중 하나를 호출하지 말고)하여 쉽게 할 수 있습니다. 예를 들어

, 그것은 이렇게 아주 사소한 :

public static string NonEncodedUrl(this HtmlHelper helper, 
    string linkAction, string text) 
{ 
    // Get a new UrlHelper instance in the current context 
    var url = new UrlHelper(helper.ViewContext.RequestContext); 

    return String.Format("<a href=""{0}"">{1}</a>", url.Action(linkAction), text); 
} 

당신은 물론 당신의 자신의 필요에 따라 과부하 및 추가 매개 변수와 함께이를 확장 할 수 있습니다.

+0

모든 것을 다시 쓰는 데 어느 정도의 금액이 소요됩니다! 그런 다음 코드에 AjaxOptions 사본을 포함하거나 동일한 기능을 다른 방식으로 다시 작성해야합니다. –

관련 문제