如何使用ASP.NET MVC在单个视图中操作两个不同的模型? (李克特量表案例)

时间:2017-12-02 20:05:57

标签: asp.net-mvc entity-framework model radio-button multiple-models

我试图创建一个李克特量表。对于那些可能不知道这个术语的人,可能你以前见过其中的一个。有多种选择(在我的情况下为7),这表明您对给定的想法或情况有多少同意或不同意。我正在使用ASP.NET MVC 5和Entity Framework 6

我使用单选按钮作为选项选择部分。

我不想一次显示所有36个问题。因此,我为每个请求发送6个问题对象,视图中将显示6个问题。为了实现这一点,我们传递了一个id参数来实现分页,以及我的回应:

public ActionResult List(int id = 1)
        {
        int PageNo = 6 * (id - 1);
        MyDBEntities ctx = new MyDBEntities();
        IEnumerable<question> QuestionsToBeSent = new List<question>();

        QuestionsToBeSent = from q in ctx.questions
                            where (q.QuestionNo > PageNo) && 
                           (q.QuestionNo <= (id* 6))  select q;
            ViewBag.PageNo = id;
            return View(QuestionsToBeSent);
        }

我可以在视图中正确显示问题句子。问题是当我想保存显示的6个问题的选定选项时,我无法访问视图中的答案模型,因为我已经包含了问题模型。另一个问题是我通过Html.Actionlink()发送我的请求,我传递的只是一个以分页进行的数字

@Html.ActionLink("Next Page", "List", "Question", new {id = ViewBag.PageNo+1},null)

我的最后一个问题是发送此请求及其内容。我无法从单选按钮收集回复。如果我可以收集,我相信我可以在答案对象的类型中发送另一段数据,然后我可以在QuestionController中为我的List操作编写一个重载,它接受辅助答案类型。如果我能理解如何从单选按钮获取响应以及如何在单个视图中操作辅助模型,我想我可以处理其余的。我可以在重载List()方法中捕获并插入答案。

我按如下方式创建问题的单选按钮:

@foreach (var item in Model) {
<p class="lead">@Html.DisplayFor(modelItem => item.QuestionSentence)</p>
<label> I Agree </label>
   <input type="radio" value=3 name="DontKnowWhattoName">
   <input type="radio" value=2 name="DontKnowWhattoName">
   <input type="radio" value=1 name="DontKnowWhattoName">
   <input type="radio" value=0 name="DontKnowWhattoName">
   <input type="radio" value=-1 name="DontKnowWhattoName">
   <input type="radio" value=-2 name="DontKnowWhattoName">
   <input type="radio" value=-3 name="DontKnowWhattoName">
<label> I Disagree </label>

}

由于无线电控制是动态创建的,而每个问题我都有7个,我真的很困惑如何检测所选的一个,如何命名和访问它,然后如何将它传递给控制器​​?

很抱歉这么长的问题,但我真的无法把它分成单独的部分,因为我相信所有这些都是相互交织的。

0 个答案:

没有答案