【发布时间】:2015-05-28 06:33:29
【问题描述】:
我想生成列表并绑定到视图模型中,但我在下面出现错误,我是否定义了错误的属性?
传入字典的模型项是类型 'SurveyTool.Models.AnswerQuestionViewModel',但是这本词典 需要类型的模型项 'System.Collections.Generic.IEnumerable`1[SurveyTool.Models.AnswerQuestionViewModel]'。
编辑.cshtml:
@model IEnumerable<SurveyTool.Models.AnswerQuestionViewModel>
@{
ViewBag.Title = "Edit";
}
<h2>Edit</h2>
<table>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Question)
</td>
<td>
@Html.EditorFor(modelItem => item.Answer)
</td>
</tr>
}
</table>
SURV_AnswerController:
using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using SurveyTool.Models;
namespace SurveyTool.Controllers
{
public class SURV_AnswerController : Controller
{
private SurveyToolDB db = new SurveyToolDB();
//
// GET: /SURV_Answer/
public ActionResult Edit(int Survey_ID)
{
AnswerQuestionViewModel viewmodel = new AnswerQuestionViewModel();
var query = from r in db.SURV_Question_Ext_Model
join s in db.SURV_Question_Model
on r.Qext_Question_ID equals
s.Question_ID
where s.Question_Survey_ID == Survey_ID
orderby s.Question_Position ascending
select r;
foreach(var item in query)
{
viewmodel.Question = item.Qext_Text;
}
return View(viewmodel);
}
}
}
AnswerQuestionViewModel:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Web;
using System.Web.Mvc;
namespace SurveyTool.Models
{
public class AnswerQuestionViewModel
{
public string Answer { get; set; }
public string Question { get; set; }
}
}
【问题讨论】:
-
您只传递一个对象来查看视图期望集合的位置。
-
此外,您会在循环期间覆盖 viewmodel.Questions 中的值。代码逻辑有问题。再想一想——你想把什么传递给视图。看起来你想传递一个数组。然后在一个动作中生成一个数组,而不是单个对象。
标签: c# linq list asp.net-mvc-4 razor