C# 从传统asp过渡到asp.net MVC
我习惯于在经典中使用嵌套循环。来自第一个记录集的数据被传递到第二个记录集。我如何在MVC中完成同样的事情?据我所知,我只能将一个模型传递给我的视图C# 从传统asp过渡到asp.net MVC,c#,asp.net,asp.net-mvc,asp.net-mvc-4,asp-classic,C#,Asp.net,Asp.net Mvc,Asp.net Mvc 4,Asp Classic,我习惯于在经典中使用嵌套循环。来自第一个记录集的数据被传递到第二个记录集。我如何在MVC中完成同样的事情?据我所知,我只能将一个模型传递给我的视图 <% rs.open "{Call usp_SalesOrder}",oConn Do While (NOT rs.EOF) %> <div><% = rs("SalesOrderNumber")%></div> <% rs2.open "{Call
<%
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
%>
可以使用ViewBag传递与模型无关的图元。也不要害怕创建自己的ModelView对象,这些对象可以在视图和控制器之间工作。您的观点不应局限于您的模型所提供的内容 看看如何在MVC中实现ViewModel
也许可以看看如何使用ViewBag将与模型无关的值传递给视图。可以使用ViewBag传递与模型无关的元素。也不要害怕创建自己的ModelView对象,这些对象可以在视图和控制器之间工作。您的观点不应局限于您的模型所提供的内容 看看如何在MVC中实现ViewModel
也许可以看看如何使用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>();
}
这样,您就可以访问视图中的所有销售订单(及其销售订单行)。我的建议是构建一个更健壮的模型。的确,您只能将一个模型传递给视图,但您的模型可以包含多个数据集的结果,前提是您已在控制器中收集了这些数据集并将其分配给模型 我还建议远离可视包。这是一个容易落入的陷阱。相信我,我说你以后会后悔的 对于您的示例,可以使用如下定义的模型:
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>();
}
这样,您就可以访问视图中的所有销售订单(及其销售订单行)。我认为Nathan的帖子是一个好的开始。以下是我从头到尾要做的事情 这就是我将如何制作我的模型:
public class SalesOrderModel
{
public List<SalesOrderLines> SOLines = new List<SalesOrderLines>();
public List<SalesOrder> SOHeader = new List<SalesOrder>();
}
我想说内森的职位是一个好的开始。以下是我从头到尾要做的事情 这就是我将如何制作我的模型:
public class SalesOrderModel
{
public List<SalesOrderLines> SOLines = new List<SalesOrderLines>();
public List<SalesOrder> SOHeader = new List<SalesOrder>();
}
这是您的新代码还是您在classic中所做的并希望转换的代码?@RyanSchlueter我希望嵌套数据库调用效率非常低,尤其是在迭代
ADODB.Recordset
时。这是您的新代码还是您在classic中所做的并希望转换的代码?@RyanSchlueter我希望嵌套数据库调用效率非常低,尤其是在迭代ADODB.Recordset
时。
@foreach(var something in Model.SOHeader)
{
foreach (var thing in Model.SOLines.Where(i => i.SOKey == something.SOKey))
{
//display info here
}
}