从视图ASP.NET Core填充模型中的List <object>

时间:2018-12-17 10:46:55

标签: asp.net-mvc razor asp.net-core

我有一个模型,该模型具有很少的属性和其他对象的列表。

模型报价:

汽车

日期

bla bla

OfferRaws列表

OfferRaw:

PartCode

PartDescription

价格


因此,在我的视图中,当用户提出要约时,他必须填写要约的所有数据,但是我如何从用户那里获取已填写的信息来填充OfferRaws的数据,然后将其添加到列表中模型的

 public OfferCreateViewModel()
    {
        this.Raws = new List<OfferRawCreateViewModel>();
    }

    public string CarMake { get; set; }

    public string CarModel { get; set; }

    public string CarRegistrationNumber { get; set; }

    public string CarVinNumber { get; set; }

    public string CarOwner { get; set; }

    public ICollection<OfferRawCreateViewModel> Raws { get; set; }

1 个答案:

答案 0 :(得分:0)

我的理解是,您要在创建要约时添加多个Raw,然后将所有数据传递给您的控制器。这可以借助js来完成。您可以在下面参考我的简单演示。

1。我的模型

public class OfferRawCreateViewModel
{
    public string PartCode { get; set; }
    public string PartDescription { get; set; }
}

public class OfferCreateViewModel
{
    public OfferCreateViewModel()
    {
        this.Raws = new List<OfferRawCreateViewModel>();
    }

    public string CarModel { get; set; }

    public string CarOwner { get; set; }

    public ICollection<OfferRawCreateViewModel> Raws { get; set; }
}

2。查看

@model WebApplication1.Models.OfferCreateViewModel


<form asp-action="Create" method="post">
<div asp-validation-summary="ModelOnly" class="text-danger"></div>
<div class="form-group">
    <label asp-for="CarModel" class="control-label"></label>
    <input asp-for="CarModel" class="form-control" />
    <span asp-validation-for="CarModel" class="text-danger"></span>
</div>
<div class="form-group">
    <label asp-for="CarOwner" class="control-label"></label>
    <input asp-for="CarOwner" class="form-control" />
    <span asp-validation-for="CarOwner" class="text-danger"></span>
</div>

<div class="form-group" id="item-list">
    <a href="#" id="add">Add</a>
    <br />
    <input type="text" asp-for="Raws" class="items" name="Raws[0].PartCode" />
    <input type="text" asp-for="Raws" class="items" name="Raws[0].PartDescription" />
</div>
<input type="submit" value="Create" class="btn btn-default" />
</form>
@section Scripts {
<script>
$(function () {

   $("#add").click(function (e) {
       e.preventDefault();
       var i = ($(".items").length) / 2;
       var n = '<br /><input type="text" class="items" name="Raws[' + i + '].PartCode" />' +
           '<input type="text" class="items" name="Raws[' + i + '].PartDescription" />'

       $("#item-list").append(n);
   });

});
</script>
}

3.Controller

 [HttpPost]
 public async Task<IActionResult> Create(OfferCreateViewModel model)