如何将表连接传递给我在ASP.net中的视图

时间:2016-10-17 21:49:10

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我是C#和asp.net以及mvc的新手。我试图找出如何将我的数据从我的控制器传递到我的视图。我让它使用一个表,但我需要更多信息。

我的控制器

namespace OpenCustomerOrders.Controllers
{
    public class OrderController : Controller
    {

        OrderContext db = new OrderContext();
        public ActionResult Index()
        {
            var query = (from h in db.oeordhdr_sql
                         join l in db.oeordlin_sql
                         on h.ord_no equals l.ord_no
                         select new
                         {
                             h.ord_no,
                             h.ship_via_cd,
                             h.bill_to_name,
                             l.item_no,
                             l.qty_ordered,
                             l.item_desc_1,
                         }).ToList();


            return View(query);
        }
    }
}

我现在的观点看起来像是

@model IEnumerable<OpenCustomerOrders.oeordhdr_sql>

@{
    ViewBag.Title = "Index";
}

 <th>Bill to Name</th>

 <td>
            @Html.DisplayFor(modelItem => item.ord_no)
        </td>

1 个答案:

答案 0 :(得分:2)

您需要在此处创建一个ViewModel,并在其中添加需要在视图上显示的属性,如下所示:

public class OrdersViewModel
{

  public int ord_no { get;set; }
  public int item_no { get;set; }
  // other properties needed
  .................
  .................                       
}

然后在您的linq查询中,您将使用该类实例进行投影,如:

public ActionResult Index()
{
     var query = (from h in db.oeordhdr_sql
                  join l in db.oeordlin_sql
                  on h.ord_no equals l.ord_no
                  select new OrdersViewModel
                  {
                      ord_no = h.ord_no,
                      .........
                      .........
                      item_no = l.item_no
                  }).ToList();


     return View(query);
}

现在在View中将模型更改为新的viewmodel:

@model IEnumerable<OpenCustomerOrders.OrdersViewModel>

@{
    ViewBag.Title = "Index";
}

 <th>Bill to Name</th>

 <td>@Html.DisplayFor(modelItem => item.ord_no)</td>