这是我的第一个程序,我不太清楚如何完成我的代码。我正在尝试创建一个新的交易,对于供应商,将有多种库存类型。我迷失在如何使用Partial View将库存类型添加到列表中。任何有关如何构建代码的指导将不胜感激。这是我的代码:
的ViewModels:
public class InventoryTransactionParent
{
[Key]
public int InventoryTransactionID { get; set; }
[ForeignKey("InventoryTransactionType")]
[Display(Name = "Transaction Type")]
public int InventoryTransactionTypeID { get; set; }
public virtual InventoryTransactionType InventoryTransactionType { get; set; }
[Display(Name = "Supplier")]
[ForeignKey("Supplier")]
public int? SupplierID { get; set; }
public virtual Supplier Supplier { get; set; }
[Display(Name = "Transaction Date (From previous month only)")]
[DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")]
public DateTime InventoryTransactionDate { get; set; }
[Display(Name = "Receipt/Invoice No.")]
public string InventoryTransactionReceipt { get; set; }
[Display(Name = "Transaction By")]
public string InventoryTransactionBy { get; set; }
[Display(Name = "Created On")]
public DateTime InventoryTransactionCreatedDateTime { get; set; }
[Display(Name = "Created By")]
public string InventoryTransactionCreatedBy { get; set; }
public bool InventoryTransactionCancelled { get; set; }
public int? InventoryTransactionCancelledSourceID { get; set; }
public List<InventoryTypeChild> InventoryTypeChilds { get; set; }
}
public class InventoryTypeChild
{
[ForeignKey("InventoryType")]
[Display(Name = "Inventory Type")]
public int InventoryTypeID { get; set; }
public virtual InventoryType InventoryType { get; set; }
[Display(Name = "Quantity")]
public decimal InventoryTransactionQuantity { get; set; }
[Display(Name = "Price per Item")]
public decimal InventoryTransactionPrice { get; set; }
[Display(Name = "Remarks (1000 characters)")]
[DataType(DataType.MultilineText)]
public string InventoryTransactionRemarks { get; set; }
}
查看:
@model Inventory.ViewModels.InventoryTransactionParent
@using (Html.BeginForm()) {
@Html.ValidationSummary(true)
<fieldset>
<legend>In Transaction</legend>
<div class="editor-label">
@Html.LabelFor(model => model.SupplierID, "Supplier")
</div>
<div class="editor-field">
@Html.DropDownList("SupplierID", String.Empty)
@Html.ValidationMessageFor(model => model.SupplierID)
</div>
<div class="editor-label">
@Html.LabelFor(model => model.InventoryTransactionDate)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.InventoryTransactionDate, "TransactionDate")
</div>
<div class="editor-label">
@Html.LabelFor(model => model.InventoryTransactionReceipt)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.InventoryTransactionReceipt)
@Html.ValidationMessageFor(model => model.InventoryTransactionReceipt)
</div>
<div id="inventorytypes">
@using (Html.BeginForm()) {
<table>
<tr>
<td>@Html.LabelFor(model => Model.InventoryTypeChilds[0].InventoryTypeID)</td>
<td>@Html.LabelFor(model => Model.InventoryTypeChilds[0].InventoryTransactionPrice)</td>
<td>@Html.LabelFor(model => Model.InventoryTypeChilds[0].InventoryTransactionQuantity)</td>
<td>@Html.LabelFor(model => Model.InventoryTypeChilds[0].InventoryTransactionRemarks)</td>
<td></td>
</tr>
@{
if (Model.InventoryTypeChilds != null)
{
for (int i = 0; i < Model.InventoryTypeChilds.Count(); i++)
{
<tr>
<td>
@Html.DropDownList("InventoryTypeID", String.Empty)
@Html.ValidationMessageFor(model => model.InventoryTypeChilds[i].InventoryTypeID)
</td>
<td>
@Html.EditorFor(model => Model.InventoryTypeChilds[i].InventoryTransactionPrice)
@Html.ValidationMessageFor(model => Model.InventoryTypeChilds[i].InventoryTransactionPrice)
</td>
<td>
@Html.EditorFor(model => Model.InventoryTypeChilds[i].InventoryTransactionQuantity)
@Html.ValidationMessageFor(model => Model.InventoryTypeChilds[i].InventoryTransactionQuantity)
</td>
<td>
@Html.EditorFor(model => Model.InventoryTypeChilds[i].InventoryTransactionRemarks)
@Html.ValidationMessageFor(model => Model.InventoryTypeChilds[i].InventoryTransactionRemarks)
</td>
<td>
<input type="submit" value="Add" />
</td>
</tr>
}
}
}
</table>
}
</div>
<p>
<input type="submit" value="In" />
</p>
</fieldset>
}
控制器(仍然非常粗糙):
public ActionResult InMultipleTransaction()
{
ViewBag.InventoryTypeID = new SelectList(db.InventoryTypes, "InventoryTypeID", "InventoryTypeName");
ViewBag.SupplierID = new SelectList(db.Suppliers, "SupplierID", "SupplierName");
InventoryTransactionParent itp = new InventoryTransactionParent();
itp.InventoryTypeChilds = new List<InventoryTypeChild>();
itp.InventoryTypeChilds.Add(new InventoryTypeChild()
{
});
return View(itp);
}
答案 0 :(得分:0)
您无需在Partial Views
关系中使用one-to-many
。如果同时创建父对象和子对象,Partial Views
非常有用,主要发生在one-to-one
关系中(但即便如此,大多数人都使用ViewModels)。但在您的情况下,您必须首先创建父对象,然后添加许多子对象。
This Plural Sight video would be a good way to start. There is a free trial