具有ICollection对象的MVC HTML助手

时间:2016-12-20 02:53:48

标签: c# asp.net-mvc entity-framework

我正在构建一个通过Entity Framework添加到数据库的表单。我有一切工作......但由于某些原因,当我提交表单时,控制器无法识别应该属于我的Icollection的任何项目的表单条目。

基本上我有一系列产品,用户可以添加越来越多的东西,当他们提交表格时,产品将被添加到ICollection中,并将其添加到Products表中。

在此页面上,数据库上下文中从不存在任何内容,因此我实际上不必获取产品的任何数据。只有一行有空表格,他们可以填写。

以下是我所拥有的...但是当我点击提交时,控制器总是显示产品的NULL。

数据模型

  public class AddInvoiceViewModel
  {
    [Display(Name = "Event Date")]
    public DateTime EventDate { get; set; }
    [Display(Name = "Invoice Date")]
    public DateTime InvoicetDate { get; set; }
    ....
    [Display(Name = "Products")]
    public ICollection<InvoiceData> Products { get; set; }
  }

控制器

[HttpPost]
public IActionResult Add(AddInvoiceViewModel model)
{
    Invoice invoice = new Invoice
    {
        InvoicetDate = model.InvoicetDate,
        EventDate = model.EventDate,
        ....
        Products = model.Products,
    };
    dataAccess.AddInvoice(invoice);
    return View();
}

视图

@using (Html.BeginForm())
{
    <table style="">
        <tr>
            <td>@Html.LabelFor(m => m.InvoicetDate)</td>
            <td><input type="date" asp-for="InvoicetDate"></td>
        </tr>
        <tr>
            <td>@Html.LabelFor(m => m.EventDate)</td>
            <td><input type="date" asp-for="EventDate"></td>
        </tr>
    </table>
    <table>
        <tr>
            <th>Item Details</th>
            <th>Quantity</th>
            <th>Rate</th>
            <th>Discount</th>
            <th>Tax</th>
            <th>Amount</th>
            <th> </th>
        </tr>
        <tr>
            <th>Item Details</th>
            <td>@Html.TextBoxFor(x => x.Products.FirstOrDefault().Quantity)</td>
            <td>@Html.TextBoxFor(x => x.Products.FirstOrDefault().Rate)</td>
            <td>@Html.TextBoxFor(x => x.Products.FirstOrDefault().DiscountAmount)</td>
            <td>@Html.TextBoxFor(x => x.Products.FirstOrDefault().ItemDetails)</td>
            <td>@Html.TextBoxFor(x => x.Products.FirstOrDefault().ItemDetails)</td>
            <td>x</td>
        </tr>
    </table>
    <input type="submit" value="Add" class="btn btn-primary">
    }

一切正常但发票数据(产品)的收集

我尝试更改项目详细信息,但无论我做什么,Controller总是有空产品。

0 个答案:

没有答案