C# 生成列表并从Linq返回视图
我想从查询中生成一个列表并在视图中显示,但它显示了如下错误,我犯了哪些错误 传递到字典中的模型项的类型为 “System.Collections.Generic.ListC# 生成列表并从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
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)