2017-05-18 1 views
0

私はBotのフレームワークのアプリケーションで以下のコードを持っています。 以下のコードでは、ValidateStartDate delegateにコメントしました。その理由は、delegateをformflowに組み込むと、delegate実行コードが "context.Call(Booking、BookingComplete);"のBookingComplete代理人に直接ジャンプしたためです。理想的には、フォームビルダーからの残りのフィールドを実行する必要があります。ここでの開始日はString型である、と私は手動で日付part.Alsoを検証しています、目に見える例外は、コード実行の下FormBuilderコード実行が突然FormCompletionデリゲートにジャンプ

public static IForm<ConferenceBooking> BuildForm() 
{ 
    return new FormBuilder<ConferenceBooking>().Message("Tell me meeting details!") 
    .Field(nameof(title)) 
    .Field(nameof(StartDate))//, validate: ValidateStartDate 
    .Field(nameof(EntryTime), validate:ValidateCallTime) 
    .Build(); 
} 

中に発生していないことを 注意が開始日

private static Task<ValidateResult> ValidateStartDate(ConferenceBooking state, object response) 
{ 
var result = new ValidateResult(); 
DateTime startDt = Convert.ToDateTime(GetDate(Convert.ToString(response))); 
if (startDt == null || startDt == DateTime.MinValue) 
{ 
    result.IsValid = false; 
    result.Feedback = "I could not understand this format."; 
} 
else if (startDt.Date < DateTime.Now.Date) 
{ 
    result.IsValid = false; 
    result.Feedback = "Sorry, back dated bookings are not allowed"; 
} 
else 
{ 
    result.IsValid = true; 
    result.Value = startDt; 
} 
    return Task.FromResult(result); 
} 
+0

ValidateCallTimeメソッドとは何ですか?また、ConferenceBookingとGetDateのコードを投稿してください。 –

答えて

0

のため一部を委任され、私も持っています前にこの動作に気付きましたが、これはいつも例外のためです。 FormBuilderはすべての例外をキャッチしてキャッチブロック内のフォームを終了します。このため、例外が表示されることはありません。コードをステップバイステップで実行するか、フォームの外から実行してみてください。

+0

よろしくお願いします。 –

関連する問題