我正在构建一个asp.net mvc Web应用程序。我有以下设置,以便我的应用程序可以通过多项选择答案向一个人提问题。
public class NewPerson
{
public List <Question> Question {get; set;}
// and other properties
}
public class Question
{
public int QuestionId{get; set;}
public string QuestionText {get; set;}
public List<Answer> Answers {get; set;} //list of multi-choice answers
}
public class Answer
{
public int Answerid{get; set;}
public string AnswerText {get; set;}
}
在我的控制器中,我有一个newPerson的实例,其中填充了问题和答案。然后将其发送到视图。我希望我的视图将此数据发送回帖子控制器。我试图通过使用默认模型绑定器来做到这一点。我试图使用建议的方法 http://www.c-sharpcorner.com/UploadFile/pmfawas/Asp-Net-mvc-how-to-post-a-collection/
在我的剃刀视图中,我有
@model MyProject.ViewModels.NewPerson
以下代码允许模型绑定器绑定属性QuestionId和QuestionText
for(int i = 0; i < Model.Questions.Count; i++)
{
@Html.HiddenFor(modelItem => Model.Questions[i].QuestionId)
@Html.HiddenFor(modelItem => Model.Questions[i].QuestionText)
}
我想为答案列表做类似的事情,但我找不到办法。如何做任何帮助将非常感激!
答案 0 :(得分:3)
您需要嵌套for循环才能访问Questions[i].Answers[m]
@for (int i = 0; i < Model.Questions.Count(); i++)
{
@Html.HiddenFor(modelItem => Model.Questions[i].QuestionText)
for (int m = 0; m < Model.Question[i].Answers.Count(); m++)
{
@Html.HiddenFor(modelItem => Model.Questions[i].Answers[m].AnswerText)
}
}
如果有人对如何填充模型有疑问,请执行此操作
NewPerson model = new NewPerson();
model.Questions = (insert LinQ Query).ToList();
foreach(var item in model.Questions)
{
item.Answers = (insert LinQ Query).ToList();
}