【问题标题】:How to convert complex type to actionresult如何将复杂类型转换为 actionresult
【发布时间】:2013-12-23 07:05:50
【问题描述】:

我是 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();
}

【问题讨论】:

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


    【解决方案1】:

    您需要返回一个继承自 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());
    }
    

    【讨论】:

    • 工作起来就像一个魅力:D 顺便说一句,这是在 mvc 中调用存储过程的正确方法吗?对不起,我是新手
    • 一般来说没关系。尽管请记住,您的 UI 现在超级绑定到存储过程的结构。因此,如果您更改 sp 中的属性,您的 UI 层也必须更改。一种解决方法是返回一个“ViewModel”,它是一个“特定于”视图的类,而不是数据库。您将存储过程类转换为“ViewQueryVM”类,并返回该类。
    【解决方案2】:

    .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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多