如何将复杂类型转换为actionresult

时间:2013-12-23 07:05:51

标签: c# asp.net-mvc entity-framework edmx

我是MVC的新手,并尝试从控制器调用存储过程。

在模型中,我有edmx,它将所有存储过程作为函数

  

无法隐式转换类型   System.Collections.Generic.IEnumerable<MVC.Models.xxcomplextype_result>   到System.Web.Mvc.ActionResult
  存在显式转换。

我在控制器和动作结果函数中为实体创建了一个对象,我调用了调用存储过程的函数,它返回了上面的错误。 我应该如何将结果集转换为actionresult?

代码示例

public class DBController : Controller
{
    XXXXXXXEntities xXXXXXEntities = new XXXXXXXEntities();

    public IEnumerable<usp_xxxxx_Result> usp_xxxxx()
    {
        return XXXXXEntities.usp_xxxxx();
    }
}

public ActionResult ViewQuery() {
    DBController dBController = new DBController();

    return dBController.usp_xxxxx();
}

2 个答案:

答案 0 :(得分:7)

您需要返回一个继承自ActionResult的类。

可能你想要这样的东西:

public ActionResult ViewQuery() {
        DBController dBController = new DBController();
        return View(dBController.usp_xxxxx());
}

返回视图,结果作为Model传递。

如果要返回使用JSON:

public ActionResult ViewQuery() {
        DBController dBController = new DBController();
        return JSON(dBController.usp_xxxxx());
}

答案 1 :(得分:1)

.ToArray()解决了这个问题。

public class DBController : Controller
{
    XXXXXXXEntities xXXXXXEntities = new XXXXXXXEntities();

    public IEnumerable<usp_xxxxx_Result> usp_xxxxx()
    {
        return XXXXXEntities.usp_xxxxx();
    }
}

public ActionResult ViewQuery() {
    DBController dBController = new DBController();

    return dBController.usp_xxxxx().ToArray();
}