私は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);
}
ValidateCallTimeメソッドとは何ですか?また、ConferenceBookingとGetDateのコードを投稿してください。 –