我习惯在经典中使用嵌套循环。来自第一个记录集的数据被传递到第二个记录集。我将如何在 MVC 中完成同样的事情?据我所知,我只能将一个模型传递给我的 View 。
<%
rs.open "{Call usp_SalesOrder}",oConn
Do While (NOT rs.EOF)
%>
<div><% = rs("SalesOrderNumber")%></div>
<%
rs2.open "{Call usp_SalesOrderLines(" & rs("SOKey") & ")}",oConn
Do While (NOT rs.EOF)
%>
<div><% = rs2("SalesOrderLineNumber")%></div>
<%
rs2.MoveNext
Loop
rs2.close
%>
<%
rs.MoveNext
Loop
rs.close
%>
最佳答案
我的建议是建立一个更稳健的模型。的确,您只能将一个模型传递给您的 View ,但您的模型可以包含多个数据集的结果,前提是您已在 Controller 中收集这些数据集并将它们分配给模型。
我还建议远离 ViewBag。这是一个容易掉入的陷阱。相信我,您以后会后悔的。
对于您的示例,可能是这样定义的模型:
public class MyModel
{
public List<SalesOrder> SalesOrders = new List<SalesOrder>();
}
public class SalesOrder
{
public string SOKey = string.Empty;
public List<SalesOrderLine> SalesOrderLines = new List<SalesOrderLine>();
}
以及在 Controller 中填充销售订单的代码:
public Action Index()
{
MyModel model = new MyModel();
model.SalesOrders.AddRange(CallUspSalesOrder());
foreach (SalesOrder salesOrder in model.SalesOrders)
{
salesOrder.SalesOrderLines.AddRange(CallUspSalesOrderLines(salesOrder.SOKey));
}
return View(model);
}
这样,您就可以访问 View 中的所有销售订单(及其销售订单行)。
关于c# - 从经典的 asp 过渡到 asp.net MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22210127/