调用两个存储过程并将结果合并到一个控制器中的单个模型中

本文关键字:控制器 一个 单个 模型 结果 两个 存储过程 调用 合并 | 更新日期: 2023-09-27 18:01:53

我试图在我的MVC5 web应用程序中从一个控制器调用多个存储过程。然后,我将两个过程的结果合并到一个模型中。

public ActionResult ItemDetails(string itemNo, string custNo)
{
    SqlParameter[] param =
   {
     new SqlParameter("@itemNo",itemNo),
     new SqlParameter("@custNo", custNo)
    };
    var sqlData = itemDb.Database.SqlQuery<ItemDetailsModel>("ItemDetail @itemNo, @custNo", param).ToList();
    var whsID = new SqlParameter("@warehouse", sqlData?[0].WhsID);
    var sqlData2 = itemDb.Database.SqlQuery<ItemDetailsModel>("ItemPoLookup @itemNo, @warehouse", new SqlParameter("@itemNo", itemNo), whsID).ToList();
    sqlData.AddRange(sqlData2);
    return View(sqlData);
}

有可能在保持模型分离的同时实现这一点吗?我应该做两个get请求到我的web服务器,一个为每个存储过程,而不是将这一切合并成一个吗?如果是这样,将多个模型返回到cshtml视图的建议将不胜感激。

调用两个存储过程并将结果合并到一个控制器中的单个模型中

传递

List<List<<ItemDetailsModel>>

Dictionary<string, List<ItemDetailsModel>>`

如果您使用的是Dictionary<TKey, TValue>,您可以传递一个字符串来标识两个存储过程。

如果您不想创建另一个ViewModel并希望结果分开,请使用此

(在视图中使用此模型时可能无法获得智能感知)
dynamic viewModel = new ExpandoObject();
viewModel.sqlData = sqlData;
viewModel.sqlData2 = sqlData2;
return View(viewModel);