将值从一个cshtml表单传递给另一个cshtml表单时出错

时间:2017-04-18 16:53:30

标签: asp.net-mvc

我有这个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>
}

1 个答案:

答案 0 :(得分:1)

该视图需要一个类型calfreshByWorkUnitID的单个实例。但calFrestList变量并非如此。它的类型为DbQuery<calfreshByWorkUnitID>。这意味着它是该模型的潜在集合。

看起来您只想从查询中返回一个实例。如果是这种情况,您只需要在LINQ语句的末尾添加类似.SingleOrDefault()的内容。例如:

var calFrestList = (from m in db.vw_clerk_work_unit_activities
                    ...
                   ).SingleOrDefault();

这将执行DbQuery并实现结果,期望一条记录(如果没有记录,则为null,然后您已在下一行检查)。