我有这个MVC表单,我想将Gridview值传递给另一个MVC表单。我希望用户单击WorkUnitID然后它将从数据库中检索所有值并将这些值(工作者名字,姓氏,主管名称,案例编号)传递给其他可以添加到不同数据库的表单。见下面的代码。将值传递给add.cshtml时,表单出错,并显示以下消息:
传递到字典中的模型项的类型为'System.Data.Entity.Infrastructure.DbQuery'1 [CalFresh.Models.calfreshByWorkUnitID]',但此字典需要类型为'CalFresh.Models.calfreshByWorkUnitID'的模型项。 )
我试图找出我在这里做错了什么。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace CalFresh.Models
{
public class calfreshByWorkUnitID
{
public string tempWorkUnitID { get; set; }
public string tempWorkerFirstName { get; set; }
public string tempWorkerLastName { get; set; }
public string tempWorkerSupervisor { get; set; }
public string tempCalWINCaseNumber { get; set; }
}
}
CalFreshListController.cs
public ActionResult Add(int?id)
{
if (id ==null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
var calFrestList = (from m in db.vw_clerk_work_unit_activities
where m.work_unit_id == id
select new calfreshByWorkUnitID
{
tempWorkUnitID = m.work_unit_id.ToString(),
tempWorkerFirstName = m.assignedEmpFirst,
tempWorkerLastName = m.assignedEmpLast,
tempCalWINCaseNumber = m.calwin_case_number,
tempWorkerSupervisor = m.assignedEmpManager
});
if (calFrestList == null)
{
return HttpNotFound();
}
else
{
return View(calFrestList);
}
}
add.cshtml
@model CalFresh.Models.calfreshByWorkUnitID
@using (Html.BeginForm())
{
@Html.HiddenFor(model=>model.tempWorkUnitID)
<div class="form-group">
@Html.LabelFor(model=>model.tempWorkerFirstName, htmlAttributes: new { @class="control-label col-md-2"})
<div class="col-md-10">
@Html.EditorFor(model=>model.tempWorkerFirstName, new { htmlAttributes = new {@class="form-control"}})
</div>
[![enter image description here][1]][1]</div>
}
答案 0 :(得分:1)
该视图需要一个类型calfreshByWorkUnitID
的单个实例。但calFrestList
变量并非如此。它的类型为DbQuery<calfreshByWorkUnitID>
。这意味着它是该模型的潜在集合。
看起来您只想从查询中返回一个实例。如果是这种情况,您只需要在LINQ语句的末尾添加类似.SingleOrDefault()
的内容。例如:
var calFrestList = (from m in db.vw_clerk_work_unit_activities
...
).SingleOrDefault();
这将执行DbQuery
并实现结果,期望一条记录(如果没有记录,则为null
,然后您已在下一行检查)。