【问题标题】:MVC4 Cannot implicitly convert type model in controllerMVC4 无法在控制器中隐式转换类型模型
【发布时间】:2015-07-17 16:52:17
【问题描述】:

我正在尝试通过存储过程从我的数据库中获取一些信息,然后将其从我的控制器传输到我的视图:

 [HttpPost]
    public ActionResult MostrarRecord(String Fecha)
    {
        ViewBag.Message = "Siga los pasos para completar el proceso...";
        retail2Entities cl = new retail2Entities();
        DateTime fechaBase = Convert.ToDateTime(Fecha);
        GetIndividualSensorRecord_Result Records = cl.GetIndividualSensorRecord(ViewBag.IDSENSOR, ViewBag.TIPOSENSOR, fechaBase);


        return View(Records);
    }

但在运行时,我得到下一个错误
无法将 type'System.Data.Objects.ObjectResult' 隐式转换为 'DataRebuilder.Models.GetIndividualSensorRecord_Result'。

我怎样才能正确地做到这一点?

如果我放置:

var Records = cl.GetIndividualSensorRecord(ViewBag.IDSENSOR, ViewBag.TIPOSENSOR, fechaBase);

这是我的模型:

namespace DataRebuilder.Models
{
using System;

public partial class GetIndividualSensorRecord_Result
{
    public System.DateTime date { get; set; }
    public decimal idSensor { get; set; }
    public bool enter { get; set; }
    public Nullable<decimal> C01 { get; set; }
    public Nullable<decimal> C02 { get; set; }
    public Nullable<decimal> C03 { get; set; }
    public Nullable<decimal> C04 { get; set; }
    public Nullable<decimal> C05 { get; set; }
    public Nullable<decimal> C06 { get; set; }
    public Nullable<decimal> C07 { get; set; }
    public Nullable<decimal> C08 { get; set; }
    public Nullable<decimal> C09 { get; set; }
    public Nullable<decimal> C10 { get; set; }
    public Nullable<decimal> C11 { get; set; }
    public Nullable<decimal> C12 { get; set; }
    public Nullable<decimal> C13 { get; set; }
    public Nullable<decimal> C14 { get; set; }
    public Nullable<decimal> C15 { get; set; }
    public Nullable<decimal> C16 { get; set; }
    public Nullable<decimal> C17 { get; set; }
    public Nullable<decimal> C18 { get; set; }
    public Nullable<decimal> C19 { get; set; }
    public Nullable<decimal> C20 { get; set; }
    public Nullable<decimal> C21 { get; set; }
    public Nullable<decimal> C22 { get; set; }
    public Nullable<decimal> C23 { get; set; }
    public Nullable<decimal> C00 { get; set; }
}}

这是在我的 context.cs 中

    public virtual ObjectResult<GetIndividualSensorRecord_Result> GetIndividualSensorRecord(Nullable<int> idsensor, Nullable<int> entrada, Nullable<System.DateTime> fech)
    {
        var idsensorParameter = idsensor.HasValue ?
            new ObjectParameter("idsensor", idsensor) :
            new ObjectParameter("idsensor", typeof(int));

        var entradaParameter = entrada.HasValue ?
            new ObjectParameter("entrada", entrada) :
            new ObjectParameter("entrada", typeof(int));

        var fechParameter = fech.HasValue ?
            new ObjectParameter("fech", fech) :
            new ObjectParameter("fech", typeof(System.DateTime));

        return ((IObjectContextAdapter)this).ObjectContext.ExecuteFunction<GetIndividualSensorRecord_Result>("GetIndividualSensorRecord", idsensorParameter, entradaParameter, fechParameter);
    }

我可以传输它,但我如何能够在视图中探索变量 Records? IE。我的模型有 10 个不同的字符串对应。

感谢您的帮助。

【问题讨论】:

  • 你试过做GetIndividualSensorRecord_Result Records = cl.GetIndividualSensorRecord(ViewBag.IDSENSOR, ViewBag.TIPOSENSOR, fechaBase).ToList(); ?
  • 是的,但是存储过程只提供了1行不同列的数据,它不包含ToList()的定义
  • 我认为问题在于 GetIndividualSensorRecord() 返回一个 ObjectResult,但您试图将其设置为复杂类型 GetIndividualSensorRecord_Result。尝试做一个 .FirstOrDefault()
  • 非常感谢!它与 FirstOrDefault() 一起使用...主要问题是我在调用存储过程时滥用了 ViewBag!
  • 好!我会将该评论作为未来搜索者的答案

标签: c# asp.net-mvc-4 model controller type-conversion


【解决方案1】:

我认为问题在于 GetIndividualSensorRecord() 返回一个 ObjectResult,但您正试图将其设置为复杂类型 GetIndividualSensorRecord_Result。尝试做一个 .FirstOrDefault()

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-12-07
    • 1970-01-01
    • 1970-01-01
    • 2019-01-19
    • 1970-01-01
    相关资源
    最近更新 更多