C# 生成列表并从Linq返回视图

C# 生成列表并从Linq返回视图,c#,list,asp.net-mvc-4,listview,razor,C#,List,Asp.net Mvc 4,Listview,Razor,我想从查询中生成一个列表并在视图中显示,但它显示了如下错误,我犯了哪些错误 传递到字典中的模型项的类型为 “System.Collections.Generic.List1[SurveyTool.Models.SURV\u Question\u Ext\u Model], 但此词典需要类型为的模型项 “System.Collections.Generic.List1[SurveyTool.Models.AnswerQuestionViewModel]” Edit.cshtml: @mod

我想从查询中生成一个列表并在视图中显示,但它显示了如下错误,我犯了哪些错误

传递到字典中的模型项的类型为 “System.Collections.Generic.List
1[SurveyTool.Models.SURV\u Question\u Ext\u Model],
但此词典需要类型为的模型项
“System.Collections.Generic.List
1[SurveyTool.Models.AnswerQuestionViewModel]”

Edit.cshtml:

    @model List<SurveyTool.Models.AnswerQuestionViewModel>

@{
    ViewBag.Title = "Edit";
}

<h2>Edit</h2>

@using (Html.BeginForm())
{
    for (int i = 0; i < Model.Count;i++ )
    {
        <table>

        <tr>
            <td>
                @Html.DisplayFor(m => m[i].Question_Ext)
            </td>
        </tr>
        </table>

    }
    <input type="submit" />
}
回答问题视图模型:

public class AnswerQuestionViewModel
    {
        [HiddenInput(DisplayValue = false)]
        public int Survey_ID { get; set; }

        public virtual List<SURV_Question_Ext_Model> Question_Ext { get; set; }
        public string Questions { get; set; }
        public string Answer_Data { get; set; }
    }
公共类回答问题视图模型
{
[HiddenInput(DisplayValue=false)]
public int Survey_ID{get;set;}
公共虚拟列表问题_Ext{get;set;}
公共字符串问题{get;set;}
公共字符串应答_数据{get;set;}
}

您的视图需要一个列表模型,而您的控制器方法只返回模型的一个实例

您是否尝试返回列表

[HttpGet]
public ActionResult Edit(int Survey_ID)
{
    AnswerQuestionViewModel mymodel = new AnswerQuestionViewModel();
    var myList = new List<AnswerQuestionViewModel>();
    mymodel.Survey_ID = Survey_ID;
    myList.Add(mymodel);
    return View(myList);
}
[HttpGet]
公共行动结果编辑(内部调查\u ID)
{
AnswerQuestionViewModel mymodel=新的AnswerQuestionViewModel();
var myList=新列表();
mymodel.Survey\u ID=Survey\u ID;
myList.Add(mymodel);
返回视图(myList);
}

您正在将单视图模型传递给Razor。更改:

@model List<urveyTool.Models.AnswerQuestionViewModel>
@Html.DisplayFor(m => m[i].Question_Ext[i].Qext_Text)

隐藏的输入标记将用于将数据发回控制器。

感谢您的反馈,我如何通过查询返回列表结果?您返回了错误的列表。您需要创建一个新的List()和一个新的AnswerQuestionViewModel对象,而不是返回视图(model.ToList()),就像我在回答中所显示的那样。然后设置AnswerQuestionViewModel对象的Question_Ext属性并将其添加到列表中。将该列表设置为查询的结果。
@model List<urveyTool.Models.AnswerQuestionViewModel>
@Html.DisplayFor(m => m[i].Question_Ext[i].Qext_Text)
@model urveyTool.Models.AnswerQuestionViewModel
@Html.DisplayFor(m => m.Question_Ext[i].Qext_Text)
@Html.HiddenFor(m => m.Question_Ext[i].Qext_Text)