在MVC3中使用javascript和JSON模型綁定來幫助你。
在客戶端創建一個JavaScript「對象」匹配您的服務器端對象
function MultipleChoiceQuestion(choice_number, choice_wording, help_text)
{
this.ChoiceNumber = choice_number;
this.ChoiceWording = choice_wording;
this.HelpText = help_text;
}
然後使用JavaScript來迭代,並通過DOM解析來獲取可變數量的答案。
僞代碼...
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({
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