0

这是我的第一个程序,我不太确定如何完成我的代码。我正在尝试创建一个新交易,其中供应商将有多种库存类型。我不知道如何使用部分视图将库存类型添加到列表中。任何有关如何构建代码的指导将不胜感激。这是我的代码:

视图模型:

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);
        }
4

1 回答 1

0

You don't need to use Partial Views in one-to-many relationship. Partial Views are useful if parent and child objects are being created at the same time, mostly happens in one-to-one relationship (But even then, most people use ViewModels). But in your case, you have to have parent object created first then you add many child objects.

This Plural Sight video would be a good way to start. There is a free trial

于 2013-05-08T18:43:42.027 回答