のための私の答えをチェックし、文字列の配列に隠しフィールドの値を分割することにより、テキストボックスの数を取得することができますMVC3のjavascriptとJSONモデルバインディングを使用して、ここでお手伝いしましょう。クライアント側では
回答の可変数を取得するためにDOMを反復処理し、解析するためにJavaScriptを使用すると、サーバー側のオブジェクト
function MultipleChoiceQuestion(choice_number, choice_wording, help_text)
{
this.ChoiceNumber = choice_number;
this.ChoiceWording = choice_wording;
this.HelpText = help_text;
}
に一致するjavascriptの「オブジェクト」を作成します。
擬似コード...
var ListOfQuestions = [];
foreach(some dom elements)
{
var cn = dom.choiceNumber;
var cw = dom.choiceWording;
var ht = dom.helpText;
var question = new MultipleChoiceQuestion(cn, cw, ht);
ListOfQuestions.push(question);
}
は、Ajaxでこれを投稿してください。この方法の欠点は、ajaxを使用する必要があることです。
$.ajax({
url:"/yoursite/controller/action",
type:"POST",
data: JSON.stringify(ListOfQuestions),
dataType: 'json',
contentType: 'application/json, charset=utf-8',
success: function(data){},
error: function(){}
});
そして、サーバ側で、あなたはすでにそれを定義してきたように(あなたプロパティ名は、クライアント側のプロパティ名と一致する必要があります)ご質問のクラスがあり、コンテナクラス...
public class QuestionContainer()
{
public List<MultipleChoiceQuestion> Questions {get; set;
}
とあなたの行動は、パラメータ
public ActionResult Create(QuestionContainer questions)
{
...
}
フィル・ハークは、この記事をしたとして、これがかかりますが、MVC3前にリリースされたバインディング。彼が書いたことよりも今は簡単です。
http://haacked.com/archive/2010/04/15/sending-json-to-an-asp-net-mvc-action-method-argument.aspx
ジェネリックコレクション? – GalacticCowboy
どういう意味ですか? – Nanek
申し訳ありませんが、私はあなたの質問に誤解しました。私は、さまざまなオプションを使って質問をユーザーに提示するという考えについて話していると思っていました。 – GalacticCowboy