我刚从MVC开始,我正在学习如何创建一个订单和订单细节项目。
我也有一个清单,其中包含所有的项目在那里,但我面临一些问题,试图从库存数据通过订单的细节。
如何将这两者结合在一起?@model InventoryTest.Models.Inventory.order和@model IEnumerable< InventoryTest.Models.Inventory.Inventories>在视图代码中?
我为代码的混乱结构表示歉意,因为我还在学习,但我确实希望有人能就我所面临的问题向我提供建议。
库存模型:
public int InventoryID { get; set; }
public string ItemNo { get; set; }
public string Item { get; set; }
public int Quantity { get; set; }
订单模式:
public int OrderID { get; set; }
public DateTime Date { get; set; }
public int EmployeeID { get; set; }
public int DepartmentID { get; set; }
public IEnumerable<SelectListItem> GetEmployee()
{
var query = db.Employees.Select(c => new SelectListItem
{
Value = c.EmployeeID.ToString(),
Text = c.DisplayName,
});
return query.AsEnumerable();
}
public IEnumerable<SelectListItem> GetDeptList()
{
var query = db.Departments.Select(c => new SelectListItem
{
Value = c.DepartmentID.ToString(),
Text = c.Description,
});
return query.AsEnumerable();
}
订单细节模型:
public int OrderDetailID { get; set; }
public int Quantity { get; set; }
public int OrderID { get; set; }
public int InventoryID { get; set; }
在我的视图中,order create的代码如下:
@model InventoryTest.Models.Inventory.Order
@{
ViewBag.Title = "Order Forms";
}
<h2>Order Forms</h2>
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<hr />
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="row">
<div class="col-sm-4">
@Html.LabelFor(model => model.EmployeeID, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-offset-4">
@Html.ValidationMessageFor(model => model.EmployeeID, "", new { @class = "text-danger" })
@Html.DropDownListFor(m => m.EmployeeID, Model.GetEmployee(), "Please Select", new
{
@style = "width: 200px;height:35px",
@class = "input-select",
@data_bv_notempty = "true",
@data_bv_message = "Please select project."
})
</div>
</div>
<div class="col-sm-4">
@Html.LabelFor(model => model.Department, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-offset-4">
@Html.ValidationMessageFor(model => model.DepartmentID, "", new { @class = "text-danger" })
@Html.DropDownListFor(m => m.DepartmentID, Model.GetDeptList(), "Please Select", new
{
@style = "width: 200px;height:35px",
@class = "input-select",
@data_bv_notempty = "true",
@data_bv_message = "Please select project."
})
</div>
</div>
</div>
</div>
<hr />
}
<br />
<h4>Item Listing</h4>
<table class="table table-hover">
<tr>
<th>S/N</th>
<th>Item No.</th>
<th>Item</th>
<th>Quantity</th>
</tr>
*//I want to use foreach to populate the data here*
<tr>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
</table>
<div>
@Html.ActionLink("Back to List", "Index")
</div>
@section Scripts {
@Scripts.Render("~/bundles/jqueryval")
}
发布于 2016-06-02 03:47:18
创建视图模型类:
public class OrderAndInventoryViewModel
{
public Order OrderInfo { get; set; }
public IEnumerable<Inventories> InventoryInfo { get; set; }
}
在你看来,请使用:
@model <your namespace goes here>.OrderAndInventoryViewModel
将适当的订单和库存信息分配到控制器中的OrderAndInventory
对象中,并将其传递给视图。
发布于 2016-06-02 03:52:26
一种解决方案是创建一个新对象,将其命名为"OrderViewModel“。该对象可以包含您的订单和库存列表。然后把OrderViewModel传递到视图..。
namespace InventoryTest.Models.Inventory {
public class OrderViewModel {
public Order order { get; set; }
public IEnumerable<InventoryTest.Models.Inventory.Inventories> inventories { get; set; }
}
}
那么视图顶部的@模型将是
@model InventoryTest.Models.Inventory.OrderViewModel
在视图中,您可以访问EmployeeID作为..。
Model.order.EmployeeID
https://stackoverflow.com/questions/37582174
复制相似问题