【问题标题】:Structure for MVC4 Survey Web AppMVC4 调查 Web 应用程序的结构
【发布时间】:2013-07-12 02:50:46
【问题描述】:

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

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

我正在尝试弄清楚如何构建我的视图模型和视图。我不能只拥有这样的东西:

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

因为有 120 个。我需要使用循环或其他东西吗?我也不想将问题硬编码到应用程序中,因为将来当应用程序上线时,我可能会添加/删除/编辑问题。

我进行了搜索,但只找到了用于创建调查的应用程序,而不是 MVC 中内置的实际调查。如果您知道任何示例,请告诉我。

【问题讨论】:

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


    【解决方案1】:

    本周早些时候我实际上遇到了同样的问题。我最终成功地做的是:

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

    List<Question> Questions { get; set; }
    

    我的视图在 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>
    }
    

    在控制器上的 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)];
         }
    }
    

    【讨论】:

    • 好吧,值得一试。我的办公桌上已经有这个项目大约 4 个月了,所以我对任何事情都持开放态度。谢谢。
    • 如果每个问题的答案都不同,那么每个问题都会有一个答案对象列表。我正在尝试这个,但是在将视图模型映射到发布操作时遇到了一些问题。答案列表在发布操作中包含 0 个答案
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-07
    • 2015-10-24
    • 2011-01-23
    • 2017-04-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多