C# 如何将复杂类型转换为actionresult

C# 如何将复杂类型转换为actionresult,c#,asp.net-mvc,entity-framework,edmx,C#,Asp.net Mvc,Entity Framework,Edmx,我是MVC新手,正在尝试从控制器调用存储过程 在这个模型中,我有一个edmx,它将所有存储的进程作为函数 无法隐式转换类型 System.Collections.Generic.IEnumerable 到System.Web.Mvc.ActionResult 存在显式转换 我在控制器中为实体创建了一个对象,并在一个action result函数中调用了调用存储过程的函数,它返回了上述错误。 如何将结果集转换为actionresult 代码示例 public class DBController

我是MVC新手,正在尝试从控制器调用存储过程

在这个模型中,我有一个edmx,它将所有存储的进程作为函数

无法隐式转换类型
System.Collections.Generic.IEnumerable
System.Web.Mvc.ActionResult

存在显式转换

我在控制器中为实体创建了一个对象,并在一个action result函数中调用了调用存储过程的函数,它返回了上述错误。 如何将结果集转换为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();
}
公共类DBController:Controller
{
xxxxxxx实体xXXXXXEntities=新的xXXXXXEntities();
公共IEnumerable usp_xxxxx()
{
返回xxxxx实体。usp_xxxxx();
}
}
公共操作结果视图查询(){
DBController DBController=新的DBController();
返回dBController.usp_xxxxx();
}

您需要返回从ActionResult继承的类

可能您想要的是:

public ActionResult ViewQuery() {
        DBController dBController = new DBController();
        return View(dBController.usp_xxxxx());
}
这将返回结果作为模型传入的视图

如果要返回JSON,请使用:

public ActionResult ViewQuery() {
        DBController dBController = new DBController();
        return JSON(dBController.usp_xxxxx());
}
.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();
}
公共类DBController:Controller
{
xxxxxxx实体xXXXXXEntities=新的xXXXXXEntities();
公共IEnumerable usp_xxxxx()
{
返回xxxxx实体。usp_xxxxx();
}
}
公共操作结果视图查询(){
DBController DBController=新的DBController();
返回dBController.usp_xxxxx().ToArray();
}

工作起来很有魅力:顺便问一下,这是调用mvc中存储的进程的正确方法吗?对不起,我是新手,一般来说没关系。但是请记住,您的UI现在已超级绑定到存储过程的结构。因此,如果更改sp中的属性,UI层也必须更改。解决方法是返回一个“ViewModel”,它是一个“特定于”视图而不是DB的类。将存储过程类转换为“ViewQueryVM”类,并返回该类。