2011-02-22 2 views
0

asp.net webforms 및 nvelocity와 함께 확장 메서드를 사용할 수 있는지 궁금합니다. 문자열 값이 null 또는 비어 있으면 일부 기본값을 설정하고 싶습니다. .vm 파일의NVelocity 확장 메서드 ASP.NET webform

예 :

Example of my email body... 

    Billable Status: $billableStatus.Evaluate() 

    rest of my email body... 

시도 확장 방법 :

public static class Helper 
{ 
    public static string Evaluate(this string value) 
    { 
     if (String.IsNullOrEmpty(value)) 
      return "Not Provided"; 
     else 
      return value; 
    } 
} 

또는 내가 달성하기 위해 tryting있어 어떤 대안이 있는가?

답변

2

NVelocity가 C#/VB.NET 구문 설탕을 사용하여 확장 메서드를 해결할 수 있다고 생각하지 않습니다. 당신이,의 작업을위한 도우미가 비 정적 확인해야

$helper.Evaluate($billableStatus) 

: 템플릿에

var context = VelocityContext(); 
context.Put("helper", new Helper()); 
context.Put("billableStatus", "something"); 
... 

다음을 : 내가 뭘하면 속도 맥락에서 도우미의 인스턴스를 등록입니다 코스.

+0

브릴리언트! 감사! – dm80

0

나는 과거와 비슷한 것을 보았고 더 정교하고 더 잘 제어 할 수있는 것을 찾고있었습니다. 나는 NVelocity가 메서드와 속성 호출을 가로 챌 수있는 방법을 제공한다는 것을 알았지 만 특정 상황을 구현해야 할 것입니다. 커스텀 인터셉터를 만들기 위해서는 NVelocity.IDuck을 구현해야합니다.

 

    public class MyClass : NVelocity.IDuck 
    { 
     public object GetInvoke(string propName) 
     { 
      .... 
     } 

     public object Invoke(string method, params object[] args) 
     { 
      .... 
     } 

     public void SetInvoke(string propName, object value) 
     { 
      .... 
     } 
    } 

예를

지금 MyClass에의 인스턴스가 가로 채서 우리의 세 가지 기능 구현 방법 및 특성 호출을 전달하고 우리에게 해결하고 결과를 반환 할 수있는 기회를 제공 할 것입니다. 이 세 가지 함수 시그니처를 통해 구현할 수있는 사용 가능한 확장 유형에서 각각의 메서드를 찾아서 실행할 수있는 부분이 필요할 수 있습니다. 필요한 경우이 방법에 대한 자세한 내용은 다음 블로그 게시물을 읽어보십시오. NVelocity and extension methods