【问题标题】:model values are not showing in partial update view模型值未显示在部分更新视图中
【发布时间】:2020-04-19 09:05:51
【问题描述】:

在我的网络应用程序中,我有一个网格列表。我选择一行,然后单击编辑按钮以在弹出窗口中显示部分更新视图(我也用它来添加新数据)。视图显示,但我在文本框中没有任何值。我使用 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]")]

我 testet id,已执行操作,但 SenderId 为 0。我希望 f.e. 3.我认为这应该导致空视图。为什么SenderId0(默认值)?

我也发布了更新视图,也许这就是问题的根源(不要打扰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>

【问题讨论】:

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


    【解决方案1】:
    [Route("{SenderId}")] public IActionResult UpdateSender(long SenderId) { return PartialView("NewSender", SenderRepository.GetSender(SenderId)); }
    

    尝试将 id 替换为 SenderId。 然后 action 方法将命中所需的值。

    【讨论】:

    • 是的,SenderId 现在有了正确的值,但是视图中的文本框仍然是空的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 2012-03-29
    • 2013-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多