Получить список объектов из формы в привязке данных ядра .net - PullRequest
0 голосов
/ 25 октября 2018

Я использую ядро ​​.net со страницами бритвы, и у меня есть модель в виде списка объектов, как показано ниже:

public class Member
{
    public List<User> member { get; set; }
}

public class User
{
    public String fname { get; set; }
    public String lname { get; set; }
}

, и у меня есть форма для заполнения объекта, как показано ниже:

<form asp-controller="Population" asp-action="AddMember" method="post" class="form-horizontal" role="form" style="font-family:Cairo-Bold">
<div class="new-help add-form-container">
    <input asp-for="member.LastName" type="text" />
    <input asp-for="member.Firstname" type="text" />
</div>

и пользователь может динамически добавлять объект со страницы, когда нажимает на кнопку, которую я дублирую для него, для div, чтобы добавить нового члена, как показано ниже:

<div class="row">
   <div class="col-lg-12">
    <a class="clone-button"><u> Add another</u></a>
   </div>
</div>

   $(function () {
        $(".clone-button").on('click', function () {
            var ele = $(this).closest('.new-help').clone(true);
            $(this).closest('.new-help').after(ele);
        });
    });

как связать текстовые поля в форме, чтобы вернуть контроллеру список участников, добавленных при отправке?

Ответы [ 2 ]

0 голосов
/ 26 октября 2018

Я обнаружил, что поле списка в модели должно начинаться с заглавной буквы. В противном случае я не смог получить правильную привязку модели.

public class Member
{
    public int MemberId { get; set; }
    public List<User> Users { get; set; }

}

Создать представление

@model AddMember.Models.Member


<form asp-action="Create" method="post">

<div class="form-group" id="item-list">
    <a href="#" id="add">Add</a>
    <br/>
    <input type="text" asp-for="Users" class="items" name="Users[0].fname"/>
    <input type="text" asp-for="Users" class="items" name="Users[0].lname" />
</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 = '<input type="text" class="items" name="Users[' + i + '].fname" />' +
               '<input type="text" class="items" name="Users[' + i + '].lname" />'

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

    });
</script>
}

Контроллер:

[HttpPost]
    public async Task<IActionResult> AddMember(Member member)
0 голосов
/ 25 октября 2018

Вы должны сгенерировать элемент с индексом, как этот код:

$(function () {

   $("#add").click(function (e) {
       e.preventDefault();
       var i = $(".items").length;
       var n = '<input type="text" class="items" name="ListItems[' + i + '].Name" />';
       $("#item-list").append(n);
   });

});

Пожалуйста, смотрите эту ссылку для получения дополнительной информации:

ссылка

...