w1sph Ответов: 1

В MVC, в listitem элемент добавить новый из библиотеки jQuery


Всем Привет,

Я пытаюсь понять, как добавить новую "строку" в коллекцию в MVC4
Моя модель содержит IList< & gt;.
Этот список закольцован, для каждой записи вызывается редактор.
Все работает нормально (включая обратную проводку), за исключением добавления новой записи.

Я хотел бы собрать html нового редактора с помощью javascript и добавить его в свою таблицу.

Потратьте последние 2 часа на поиск в google, но, похоже, не можете найти ответ.

надеюсь, у кого-нибудь есть идея :)

Edit.cshtml
@using (Html.BeginForm()){
                        @for (int i = 0; i < Model.Regels_.Count; i++) {
                            @Html.EditorFor(m => Model.Regels_[i])
                        }

EditorTemplate для элемента "Regel_".
<tr>
    <td>
        @Html.EditorFor(m => Model.Aantal)
    </td>
    
....etc


$('#CmdAddNewRegel').click(function () {
    $.ajax({
        url: '@Url.Action("EditorTemplate??")',
        cache: false,
        success: function (html) {
            $("#TableRegels").append(html);
        }
    });


Что я уже пробовал:

Я начинал без editorTemplate.
Затем я попытался поместить свой вид "строки" в partialView.
это сработало, за исключением обратной проводки (частичное представление не добавляло [I] в имена полей.
EditorFor, кажется, идет своим путем,просто не могу понять эту последнюю часть.

F-ES Sitecore

Если вам нужна помощь в изменении вашего кода, вам нужно будет опубликовать соответствующие фрагменты того, что у вас уже есть.

w1sph

опубликованные фрагменты :)

1 Ответов

Рейтинг:
0

w1sph

Гогот..
грязное исправление:

Отправьте счетчик с помощью редактора ViewData, используйте его для ручного построения имени и идентификатора элементов управления.
в AJAX-вызов, я пошлю HtmlTable рассчитывать тр к запросу PartialView.

@Html.EditorFor(m => Model.Regels_[i], new { count = i })


 string s = ViewData["count"].ToString();
 <td>
     @Html.DropDownListFor(m => Model.Btwpercentage, new SelectList(new List<int>() { 0, 6, 21 }, 21), new {
    Name = $"Regels_[{s}].Btwpercentage",
    id = $"Regels__{s}__Btwpercentage",
    type = "number"
})
 </td>


public async Task<PartialViewResult> InkoopRegelRow(int? id) {
            ViewData["count"] = id;
            return PartialView("~/Views/Inkoop/EditorTemplates/InkoopOrderRegel.cshtml", new InkoopOrderRegel());
        }