значения модели не отображаются в режиме частичного обновления - PullRequest
0 голосов
/ 19 апреля 2020

В моем веб-приложении у меня есть список сетки. Я выбираю строку, а затем нажимаю кнопку редактирования, чтобы отобразить частичное представление обновления (которое я также использую для добавления новых данных) во всплывающем окне. Вид показывает, но у меня нет никаких значений в текстовых полях. Я использую компоненты devextreme, но я думаю, что моя проблема не имеет к этому никакого отношения (возможно, я ошибаюсь).

Это код onClick:

function editrow_onClick() {
        var key = $("#grid").dxDataGrid("instance").getKeyByRowIndex(selectedRowIndex);
        $.ajax({
            url: '/MasterData/Sender/UpdateSender/'+key,
        }).done(function (response) {
            var popup = $("#sender-popup").dxPopup("instance");
            popup.option("contentTemplate", function (content) {
                content.append(response);
            });
            popup.show();
        });
    }

Если я нажимаю кнопку редактирования, я получаю правильный URL-адрес, например /MasterData/Sender/UpdateSender/3.

Соответствующее действие контроллера выглядит следующим образом :

[Route("{id}")]
    public IActionResult UpdateSender(long SenderId)
    {
        return PartialView("NewSender", SenderRepository.GetSender(SenderId));
    }

В верхней части класса контроллера у меня есть соответствующий атрибут: [Route("MasterData/[controller]/[action]")]

Я тестирую идентификатор, действие достигнуто, но SenderId равно 0. Я бы думаю, что 3. Это должно быть причиной пустого представления, я думаю. Почему SenderId 0 (значение по умолчанию)?

Я также публикую вид обновления, возможно, это является источником проблемы (не беспокойтесь о действии AddSender, я планирую изменить его условно , если я получу данные об обновлении, работающие):

@model Sender

<form asp-action="AddSender" asp-controller="Sender" method="post">
    @using(Html.DevExtreme().ValidationGroup()) { 
        @(Html.DevExtreme().Form<Sender>()
            .ID("form")
            .ColCount(1)
            .Items(items => {
                items.AddSimpleFor(m => Model.Name);
                items.AddSimpleFor(m => Model.Address);
                items.AddSimpleFor(m => Model.ContactPerson);
                items.AddSimpleFor(m => Model.ContactEmail);
                items.AddGroup().Items(groupItem => groupItem.AddSimple().Template(
                @<text>
                    <div style="text-align: right">
                        @(Html.DevExtreme().Button().ID("save").Text("Mentés").Width(100).Type(ButtonType.Success).UseSubmitBehavior(true))
                        @(Html.DevExtreme().Button().ID("cancel").Text("Mégsem").Width(100).Type(ButtonType.Normal).OnClick("close_onClick"))
                    </div>
                </text>));
            })
            .LabelLocation(FormLabelLocation.Top)
            .FormData(Model)
        )
    }
</form>

<script>
    function close_onClick() {
        $("#sender-popup").dxPopup("hide");
    }
</script>

1 Ответ

0 голосов
/ 19 апреля 2020
[Route("{SenderId}")] public IActionResult UpdateSender(long SenderId) { return PartialView("NewSender", SenderRepository.GetSender(SenderId)); }

Попробуйте заменить id на SenderId . Тогда метод действия получит нужное значение.

...