我是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>
答案 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>