Как сделать изменение модели глобальным в бритве - PullRequest
0 голосов
/ 19 марта 2019

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

<div id="mark-reassigned-modal" class="modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 id="myModalLabel">@Employee_Index.MarkReassignedHeading</h4>
            </div>
            <div class="modal-body">
                <div class="alert alert-warning">
                    @Employee_Index.MarkReassignedText
                </div>
                @Html.EditorFor(m => m.DateTimePicker, new { htmlAttributes = new { name = "DateTimePicker", @style = "width:50%;" } })

                @Html.TextAreaFor(m => m.DispositionNotes, new { cols = "50%", rows = "3" })

            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-danger dirtyignore" aria-hidden="true" id="mark-reassigned-submit">@Employee_Index.YesExcuseText</button>
                <a href="#" class="btn btn-link cancel dirtyignore" data-dismiss="modal" aria-hidden="true">@Common.Cancel</a>
            </div>
        </div>
    </div>
</div>

<div id="mark-new-shift-modal" class="modal" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
    <div class="modal-dialog">
        <div class="modal-content">
            <div class="modal-header">
                <h4 id="myModalLabel">@Employee_Index.MarkNewShiftHeading</h4>
            </div>
            <div class="modal-body">
                <div class="alert alert-warning">
                    @Employee_Index.MarkNewShiftText
                </div>
                @Html.EditorFor(m => m.DateTimePicker, new { htmlAttributes = new { name = "DateTimePicker", @style = "width:50%;" } })

                @Html.TextAreaFor(m => m.DispositionNotes, new { cols = "50%", rows = "3" })

            </div>
            <div class="modal-footer">
                <button type="button" class="btn btn-danger dirtyignore" aria-hidden="true" id="mark-new-shift-submit">@Employee_Index.YesExcuseText</button>
                <a href="#" class="btn btn-link cancel dirtyignore" data-dismiss="modal" aria-hidden="true">@Common.Cancel</a>
            </div>
        </div>
    </div>
</div>

JS для этого выглядит следующим образом:

$(document).on("click", "#mark-new-shift-submit", function () {
    var resultsContainer = $('#results');
    resultsContainer.block({
        message: '<i class="fa fa-icon fa-spin fa-spinner bigger-230" />'
    });
    var data = $('#Index').serialize();
    $.ajax({
        type: "POST",
        url: '@Url.Action("MarkNewShift", "Employee")',
        data: data,
        dataType: "html",
        success: function (data) {
            $('#mark-new-shift-modal').modal('hide');
            $("#results").html(data);
            updatePagination();
            resultsContainer.unblock();
            $('#employee-list').selectableTable();
            clearSelections();
        }
    });
});

Когда я проверяю идентификатор #Index, я обнаруживаю, что для DateTimePicker есть несколько результатов, и он принимает только первый. Как я могу сделать сборщик глобальным, чтобы в #Index был только один результат. Это также может дать пользователю возможность продолжить с того места, на котором он остановился, если он решит использовать другую опцию.

1 Ответ

0 голосов
/ 19 марта 2019

Может быть, идея сделать свойства DateTimePicker и DispositionNotes списком.

Например:

List<string> DateTimePickers  
List<string> DispositionNotes

А затем отдайте их редактору, как

Html.EditorFor(x => x.DateTimePickers[0], ...
Html.EditorFor(x => x.DispositionNotes[0], ...

Вы даже можете расширить классы DateTimePicker и DispositionNote с помощью типа или чего-то такого, чтобы сделать его универсальным, чтобы можно было создать цикл for в своем View для создания нескольких DateTimePickers и DispositionNotes.

Как:

for(int i = 0; i < Model.DateTimePickers.Count; i++)
{
    Html.EditorFor(x => x.DateTimePickers[i], ...
}

Дайте ему попытку.

...