我试图从我的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);
}
是否可以在保持模型分离的同时实现这一目标? 我是否应该向我的Web服务器发出两个请求,每个存储过程一个请求,而不是将这些请求合并为一个?如果是这样,我们将非常感谢将多个模型返回到cshtml视图的建议。
答案 0 :(得分:1)
如果您不想创建其他ViewModel
并希望结果分开,请使用此(在视图中使用此模型时可能无法获得智能感知)
dynamic viewModel = new ExpandoObject();
viewModel.sqlData = sqlData;
viewModel.sqlData2 = sqlData2;
return View(viewModel);
答案 1 :(得分:1)
传递
List<List<<ItemDetailsModel>>
或
Dictionary<string, List<ItemDetailsModel>>`
如果您使用的是Dictionary<TKey, TValue>
,则可以传递一个字符串来标识两个存储过程。