2014-12-05 3 views
0

Orchard에서 DateFrom 및 DateTo의 두 필드를 사용하여 사용자 지정 필터 양식을 만들어야합니다. 나는 다음과 같은 코드를 사용하여 두 개의 텍스트 상자 필드를 만들 수 있어요 : 나는 사용자가 특정 형식의 날짜를 입력 있는지 확인하고 싶습니다 가능하면Orchard에서 사용자 지정 쿼리 필터를 만들 때 날짜를 확인하는 방법

public void Describe(dynamic context) 
    { 
     Func<IShapeFactory, dynamic> form = 
      shape => 
      { 

       var f = Shape.Form(
        Id: "EventRangeForm", 
        _DateFrom: Shape.TextBox(
         Id: "DateFrom", Name: "Date From", 
         Title: T("Events from date"), 
         Description: T("Events from date"), 
         Classes: new[] { "text medium" } 
         ), 
        _DateTo: Shape.TextBox(
         Id: "DateTo", Name: "Date To", 
         Title: T("Events to date"), 
         Description: T("Events to date"), 
         Classes: new[] { "text medium" } 
         )); 
       return f; 
      }; 

     context.Form("EventRangeForm", form); 
    } 

. 보기에서 나는 보통 텍스트 상자에 datepicker를 붙이지 만 여기서는 그렇게 할 수 없다. ApplyFilter 메서드에서 전체 코드를 작성하여 사용자가 텍스트 상자에 쓸 수있는 가능한 입력을 확인하는 것보다 효율적인 솔루션이 있습니까?

답변

1
public class DateTimeValidation : FormHandler { 
    public override void Validating(ValidatingContext context) { 
     if (context.FormName == "EventRangeForm") { 
     var min = context.ValueProvider.GetValue("DateFrom"); 
     //validate... 
     context.ModelState.AddModelError("DateFrom", "You did it wrong!"); 
     } 
    } 
} 

클라이언트 측 유효성 검사와 예쁜 날짜 시간 선택기를 사용하여 양식을 직접 만들 수 있습니다. 아니면 jquery를 통해 datetime picker로 텍스트 상자를 변경하기 위해 도형에 포함시키는 스크립트를 만들 수 있습니까?

+0

고마워요! 하지만 IFormProvider에 스크립트를 포함하려면 어떻게해야합니까? RegisterStartupScript를 사용해 보았지만 작동하지 않았습니다. – Soel

+0

리소스 관리자를 삽입하고 거기에서 스크립트를 포함하십시오. 예를 들어,이 답변을 확인하십시오 : http://stackoverflow.com/a/27020881/1037489 – Hazza

+0

고마워, 난 단지 남아있는 문제가 있습니다. 충돌없이 동일한 필드에 DatePicker와 Orchard 토크 나이저를 모두 연결할 수 있습니까? 내가 시도했는데 둘 다 표시되지만 DatePicker가 텍스트 상자에 알파벳 문자를 쓰지 못하게 차단하여 토큰 화 프로그램 (즉, 쿼리 문자열 토큰)에서 선택한 항목을 편집 할 수 없습니다. – Soel