Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从传统asp过渡到asp.net MVC_C#_Asp.net_Asp.net Mvc_Asp.net Mvc 4_Asp Classic - Fatal编程技术网

C# 从传统asp过渡到asp.net 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

我习惯于在经典中使用嵌套循环。来自第一个记录集的数据被传递到第二个记录集。我如何在MVC中完成同样的事情?据我所知,我只能将一个模型传递给我的视图

  <% 
  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
    }
}