2010-08-01 6 views
2

HtmlHelpers는 정말 유용합니다. 내가 할 수 없을 때까지 AjaxHelpers를 사용하고 있었기 때문에 ... 지금은 jquery + javascript를 선호하지만 작성하고 싶지 않습니다. javascript (mayby ​​내가 원했던만큼 잘 알지 못하기 때문에) JQueryHelper와 같은 것을 구현하고 싶었지만 지금은 어떻게해야할지 모르겠다.하지만 지금은 어떻게할지는 모르겠다.Like-HtmlHelper를 구현하는 방법

"Helper" 대부분의 메서드는 그냥 컨트롤러 등 데이터를 전달할 것입니다 및 UI 일부 부분을 업데이트 할 수 있으므로 AjaxHelper, 같은 있지만 JQuery, MSScripts 기반으로 만들 싶습니다.

이러한 수업에는 무엇을 포함해야합니까? 어떻게 문맥, URL을 얻을 수 있고 동적으로 삽입 할 수있는 적절한 자바 스크립트 코드를 생성 예.

<div onclick=JQuery.Action("<ActionName>", "<Controller>", new { param1, param2}, <Id to Update>)> My Div</div> 

어떻게 HtmlHelper 또는 AjaxHelper에서 구현됩니까?

편집 : 편집 : 몇 가지 간단한 구현을 시도했지만 지식이 부족하고 exacly 확장 클래스를 구현하는 방법을 알지 못한다고 생각합니다.

나는를 ClassA (클래스) 및 ClassAExt (확장)했습니다 : 나는 그런 일을했습니다 을 :

static public class ClassAExt{ 
    public static MvcHtmlString Method(this ClassA classA) { 

    } 
} 

그러나보기()에서

내가 ClassAExt.Method를() 내가 가지고 사용하고 있습니다 ClassA의 인스턴스도 전달합니다 (Ajax 및 Html에서이 인수는 회색 (선택 사항? 필요하지 않음), 그러한 효과를 얻는 방법).

답변

1

:

링크는 MVC 선물 및 MVC 소스 코드를 모두 다운로드합니다.

HtmlHelper도 인스턴스화됩니다 (예 :new HtmlHelper())를 페이지 렌더링 및 사용자 컨트롤 렌더링 과정에서 처리합니다. AjaxURL 도우미도 인스턴스화이 다양한 변수에 대한 하나의 액세스 권한을 부여 무엇을 얻을 등으로 HttpContext 등

그래서 위하여 당신이 당신의 헬퍼 클래스가 ClassA 관련 사용을 위해 당신이 너무 인스턴스화해야합니다. 나는 그 때 질문이 어떻게이 일을하도록 인도한다고 생각 하는가? ViewPage, ViewUserControl 및 ViewMasterPage 클래스를 확장해야 할 수 있습니다.

0

명백하지 않기 때문에 명백하지 않습니다. 당신은 Html 헬퍼에서, 등, 요청 문맥에서 얻을 수

public static HtmlString Foo(this HtmlHelper helper, string param) 
{ 
    //do whatever 
} 

: 기본적으로, 당신은 HTML 헬퍼의 확장을 확장합니다.

+0

는 Mayby 시작에서 모든 것을 구현하는 이유가없고, 당신이 바로 될 수있다 : 확장 Html 헬퍼는 더 나은 방법입니다 ... 나는 그냥 (회색) 필요하지 않습니다 "(이 Html 헬퍼 Html 헬퍼)"이유를 알고 싶어 보기의 코드 및 내 확장보기의 코드에서 각 메서드 (ClassA classA) 전달해야합니다. – Simon

+0

솔직히 귀하의 질문을 이해할 수 없습니다 - 아마도 "classA"보다 더 구체화해야합니다. –

0

내가보기에, 문제는 확장 방법을 이해하지 못하는 것입니다. 당신이

static public class ClassAExt{ 
    public static MvcHtmlString Method(this ClassA classA) { 

    } 
} 

이있는 경우

이 같은보기에서 사용

<%: ClassAInstance.Method() %> 

은 당신의 Web.config의 페이지/네임 스페이스 섹션에 <add namespace="NamespaceOfClassA" />을 추가 할 필요가 있다고 할 수 있습니다.

이렇게하면 HtmlHelper 클래스를 확장하여 필요한 모든 작업을 수행 할 수 있으므로 실제로 수행 할 수있는 작업은 없습니다. 기본적으로 할 수없는 일을 원하면 확장 메소드를 작성하십시오. 또한 MVC Futures 어셈블리를 다운로드하면 HtmlHelper에 대한 많은 유용한 확장 메서드가 포함 된 dll Microsoft.Web.Mvc이 있습니다.

HtmlHelper 또는 AjaxHelper을 어떻게 구현했는지 알고 싶다면 MVC 소스 코드를 확인하십시오. 내가 제대로 질문을 이해한다면 확실하지 오전 http://aspnet.codeplex.com/releases/view/41742

+0

View()에서 사용하는 방법을 알고 있습니다. 마법은 없습니다. <% @ Import Namespace = "NamespaceOfClassA"%>는보기의 가시성 문제를 해결합니다. 주요 질문은 "HtmlHelper를 확장하는 방법"이 간단하고 잘 설명 된 소스가 많았지 만 문제는 "HtmlHelper와 같은 클래스를 작성하는 방법"이었습니다. 별도의 클래스를 만들고 싶었던 종속성을 알고 싶었습니다. 기존 컨트롤러에 대처할 수 있습니다. 하지만 thx는 MVC의 소스 코드를 확인하겠습니다. – Simon

+0

죄송합니다. 질문에 잘못된 인상을 받았습니다. 이 경우 아마 @ 아마드의 대답과 같은 것을 찾고있을 것입니다. 그러나 그것은 많은 일이 될 것입니다. jQuery를 사용하고 Html/Url 도우미를 사용하여 물건을 주입하는 것이 더 쉬울 것입니다. – Necros