2017-11-23 19 views
0

ユーザーがそのオプションを選択した場合、私は「ヘルプ」を持つ列挙体の値の1つに列挙型のプロパティを持っています。ヘルプ付きテキスト。 2.続行したいのか、または彼が退出したいのかをユーザーに尋ねる。どうやったらよいかわかりません。 ありがとうございます。選択フィールドの妥当性確認

public enum ContentClassification 
{ 
    Confidential_Restricted = 1 , 
    Confidential_Secret = 2, 
    Public = 3, 
    Strictly_Confidential = 4, 
    help = 5 
}; 

公開コンテンツ分類コンテンツクラス{get;セット; }

リターン新しいFormBuilder() 選択図】図(がNameOf(ContentClassification))

答えて

0
あなたは、 Form何度も起動することが

は、あなたが最初にFormから「ヘルプ」の選択肢を取得する場合、確認のために別のフォームを起動意味。

たとえば

public enum ContentClassification 
{ 
    Confidential_Restricted = 1, 
    Confidential_Secret = 2, 
    Public = 3, 
    Strictly_Confidential = 4, 
    help = 5 
}; 

public enum Validating 
{ 
    Continue, 
    Leave 
}; 

[Serializable] 
public class Classification 
{ 
    public ContentClassification? Choice; 

    public static IForm<Classification> BuildForm() 
    { 
     return new FormBuilder<Classification>() 
      .Message("You want to") 
      .Field(nameof(Choice)) 
      .Build(); 
    } 

    public Validating? Confirmation; 

    public static IForm<Classification> BuildConfirmForm() 
    { 
     return new FormBuilder<Classification>() 
      .Message("Send your message here") 
      .Field(nameof(Confirmation)) 
      .Build(); 
    } 
} 

そして、このような例のためにあなたのRootDialogを作成する:あなたはまだロジック・コードと一緒にGetResultAsync方法の他のオプションのロジックコードを実装する必要が

[Serializable] 
public class RootDialog : IDialog<object> 
{ 
    public Task StartAsync(IDialogContext context) 
    { 
     var form = new FormDialog<Classification>(new Classification(), Classification.BuildForm, FormOptions.PromptInStart, null); 
     context.Call(form, this.GetResultAsync); 

     return Task.CompletedTask; 
    } 


    private async Task GetResultAsync(IDialogContext context, IAwaitable<Classification> result) 
    { 
     var state = await result; 
     if (state.Choice == ContentClassification.help) 
     { 
      var form = new FormDialog<Classification>(new Classification(), Classification.BuildConfirmForm, FormOptions.PromptInStart, null); 
      context.Call(form, null); //change null to your result task here to handle the result. 
     } 
    } 
} 

2番目のフォーム BuildConfirmFormの結果を処理します。

関連する問題