2016-10-20 3 views
1

オンラインテストアプリケーションを作成しているとします。複数の選択問題を追加することができます。ユーザーが「新しいテスト問題を追加」をクリックすると、ダイアログが表示されます。このダイアログでは、質問テキスト、可能な回答の一覧、および正解が尋ねられます。だからこのようなものが結果になるでしょう:Web APIパラメータは動的に作成されたテーブル値をモデル化してバインドしますか?

Which color has the letter "G" in it? 
      A. Blue 
      B. Red 
    ----> C. Green 
      D. Yellow 
      E. Purple 

新しい質問にはそれぞれ異なるオプションがあります。だから、次の質問は次のようになります。

Does NYC have 5 boroughs? 
    ---> A. Yes 
      B. No 

私は、ユーザーが動的にフォームの内側(など、正しいものを指定し、答えを追加)これらの質問を構築するためのダイアログを作成しました。フォーム提出時にその構造をシームレスにパラメータにバインドするモデルとWeb APIを作成する方法はありますか?私のフォームにテーブルがあり、それを私のモデルの配列に何とか結びつけることができるようなものがあると思っていましたか?おそらくそのようには動作しませんが、創造的なアイデアを探しています。

答えて

0

モデルはテストを形成するために、これらのコレクションを取るだろう、この

public class Question { 
    public string Text { get; set;} 
    public IList<Answer> Answers { get; set;} 
} 

public class Answer { 
    public string Label { get; set;} 
    public string Text { get; set;} 
    public bool IsCorrect { get; set;} 
} 

APIエンドポイントのようなものを見ることができます。

public class Test { 
    public IList<Question> Questions { get; set; } 
} 

public class TestController : ApiController { 
    [HttpPost] 
    public IHttpActionResult Create(Test test) { ... } 
} 
+0

お返事ありがとうございます。私は自分の質問は、モデルの構造そのものよりも、フォームの提出についてのものだと思う。 Web APIにはパラメータバインディングがあることはわかっています。基本的に、Webフォームのフィールドにname属性が含まれ、name属性の値がサーバー側モデルのフィールド名と一致する場合、Web APIはフォーム要素の値を自動的にサーバー側のモデル値にマップします。静的フォームフィールドにはうってつけです。しかし、この例では、応答要素は動的に生成され、数が変化します。投稿時に動的に作成されたフォームフィールドをモデルにマップするにはどうすればよいですか? – Robert

+0

コレクションを配列またはコレクションとして送信すると、ModelBinderによってコレクションが変換されます。 – Nkosi

関連する問題