MVC4 Survey Web App的结构

时间:2013-07-13 20:25:02

标签: asp.net-mvc-4 viewmodel survey

我试图使用MVC架构找出调查应用的模型结构。实际上它是一个较大的WebApp中的Q& A部分。我有大约120个问题,他们都会设置答案选项,没有书面答案。目前我有3张桌子:

Question(id, QuestionText)
Answer(id, Userid, Questionid, AnswerOptionId)
AnswerOption(id, Option) - example: Yes, No, 1-10, etc

我想弄清楚如何构建我的viewmodel和view。我不能只有这样的东西:

@Html.LabelFor(m => m.QuestionText)

因为有120个。我需要使用循环还是什么?我也不想将问题硬编码到应用程序中,因为我可能会在应用程序运行时添加/删除/编辑问题。

我进行了搜索,但只找到了用于创建调查的应用,而不是用MVC构建的实际调查。如果你知道任何例子,请告诉我。

1 个答案:

答案 0 :(得分:1)

本周早些时候,我真的遇到了同样的问题。我最终成功完成了这件事:

我的模型包含一个问题列表,这是我编写的自定义类,其中包含我的场景所需的必要属性:

List<Question> Questions { get; set; }

My View在foreach块中使用DropDownList而不是DropDownListFor,我使用每个问题的Id设置名称:

@foreach (Question question in Model.Questions)
{
     <li>@question.QuestionText</li>
     <li>Answer: @Html.DropDownList(String.Format("ddlAnswer{0}", question.QuestionId), Model.Answers)</li>
}

在Controller上的HttpPost上,我将FormCollection作为参数传递给Action,并再次遍历结果集。这似乎效率低下,但在多种情况下测试它运行得非常快。

[HttpPost]
public ActionResult Index(SurveyModel model, FormCollection form)
{
     foreach (Question question in model.Questions)
     {
          question.QuestionAnswer = form[String.Format("ddlAnswer{0}", question.QuestionId)];
     }
}