将存储库数据传输到MVC模型

时间:2011-08-20 04:20:38

标签: asp.net-mvc-3

我收到错误

错误826无法将类型'System.Collections.Generic.IEnumerable'隐式转换为'OVR.Models.ChildInfoModel'。存在显式转换(您是否缺少转换?)C:\ dev ..... \ Controllers \ NewRecordController.cs 129 34 OVR

    public ActionResult ChildInfo(ChildInfoModel childInfoModel)
    {
        //INewRecord newRecord = (INewRecord)TempData["newRecord"];

        if (TempData["CertNum"].ToString() == "")
        {
            return View();
        }
        else
        {
            string certNum = (string)TempData["CertNum"];

            //call up Child Info Screen
            var repo = new Get_Home_Repository();
            childInfoModel = repo.Get_Screen_DataDS(certNum, "ChildInfo");
            //childInfoModel = cModel;

            return View(childInfoModel);
        }

    }
  1. TempData [“CertNum”]包含我需要的值
  2. 使用@model OVR.Models.ChildInfoModel
  3. 对视图强烈输入模型
  4. 我添加了参数(ChildInfoModel childInfoModel)但是如果没有点击链接,则会提取空白页面并允许填写,否则我传入从存储库中提取数据所需的参数填充接口IChildInfo,其中包含列表中的数据为IEnumerable。我想我可以以某种方式显式转换..或者接口IChildInfo需要更新,以便将模型传递回视图。如何从存储库数据中填充模型?

1 个答案:

答案 0 :(得分:1)

什么是Get_Screen_DataDS返回?什么方法签名返回?看来你正在从Get_Screen_DS返回IEnumerable - 这是一个IEnumerable是什么? 您正在分配一个childInfoModel的实例,我假设它不是IEnumerable,但我无法确定您发布的内容。

你应该返回IEnumerable吗?如果ChildInfoModel实现IEnumerable,那么只需简单地投射它

childInfoModel =(ChildInfoModel)repo.Get_Screen_DataDS(certNum,“ChildInfo”); 但是在这种情况下,你应该只是帽子Get_Screen_DataDS返回类型ChildInfoModel。

此外,它将长期帮助您坚持一致和标准的.net命名约定。

var repo将是var repository。 GetScreenDataDS将是.... GetScreenData()或GetScreenDataByCert() FxCop规则可以帮助您:)只是我的额外.00000002