繁体   English   中英

ASP.Net Core-如何在不刷新的情况下从控制器发送消息以进行查看?

[英]ASP.Net Core - How to send message to view from controller without refreshing?

我想显示来自控制器的自定义成功/错误消息,而无需刷新。
我已经尝试过了,但是看起来它需要刷新页面才能显示数据:

风景:

@if (ViewBag.Message != null)
{
   <span>@ViewBag.Message</span>
}

控制器:

if (CurrentOrgLevel < MaxOrgLevel)
        {
            if (ModelState.IsValid && CurrentOrgLevel < MaxOrgLevel)
            {
                orgStructure.Insert(org, ModelState);
            }
        }
        else
        {
            ViewBag.Message = "Error: Max level reached.";
        }

这是从telerik控件树列表add child事件触发的: https ://demos.telerik.com/aspnet-core/treelist/editing

树状列表:

@(Html.Kendo().TreeList<OCIT.Data.Models.OrgStructure>()
            .Name("treelist")
            .Toolbar(toolbar => toolbar.Create().Text("Add " + sessionUser.Level1Name))
            .Columns(columns =>
            {
                columns.Add().Field(e => e.LevelName).Width(40);
                columns.Add().Field(e => e.Name).Width(100);
                columns.Add().Field(e => e.Level).Width(26);
                columns.Add().Width(100).Command(c =>
                {
                    c.CreateChild().Text("Add child");
                    c.Edit();
                    c.Destroy();
                })
                        .HtmlAttributes(new {style = "text-align: center;"});
            })
            .Editable()
            .Sortable()
            .Filterable()
            .DataSource(dataSource => dataSource
                .Create(create => create.Action("Create", "OrgStructure"))
                .Read(read => read.Action("All", "OrgStructure").Data("treelistParam"))
                .Update(update => update.Action("Update", "OrgStructure"))
                .Destroy(delete => delete.Action("Destroy", "OrgStructure"))
                .ServerOperation(false)
                .Model(m =>
                {
                    m.Id(f => f.NodeId);
                    m.ParentId(f => f.ParentNodeId).DefaultValue(sessionUser.DepartmentId);
                    m.Field(f => f.FiscalYear).DefaultValue(sessionUser.CurrentFiscalYearId);
                    m.Field(f => f.CreatedDateTime);
                    m.Field(f => f.DepartmentCode);
                    m.Field(f => f.Acronym);
                    m.Field(f => f.DepartmentId).DefaultValue(sessionUser.DepartmentId);
                    m.Field(f => f.RequiresChildSelect);
                    m.Expanded(false);
                    m.Field(f => f.Name);
                    m.Field(f => f.Level).Editable(false);
                    m.Field(f => f.LevelName).Editable(false);
                    m.Field(f => f.ParentNodeId);
                })

            )
            .Height(505)
.Events(events =>
{
    events.FilterMenuOpen("onFilterMenuOpen");
    events.DataBound("dataBound");
    events.DataBinding("dataBinding");
    events.Save("onSave");
    events.Remove("saveExpandState");
    events.Cancel("onCancel");
})
)

单击add child ,将触发onSave javascript函数:

function onSave() {

}

我相信我们将需要Ajax,但是在treelist控件已经可以处理ajax帖子但又需要自定义回发的情况下,如何实现它呢?

我需要显示一个错误而不重新加载,该treelist控件在数据源.Events(ev=>ev.Error("onError"))具有一个错误处理程序:

.DataSource(dataSource => dataSource
     .Create(create => create.Action("Create", "OrgStructure"))
     .Read(read => read.Action("All", "OrgStructure").Data("treelistParam"))
     .Update(update => update.Action("Update", "OrgStructure"))
     .Destroy(delete => delete.Action("Destroy", "OrgStructure"))
   .Events(ev=>ev.Error("onError"))
     .ServerOperation(false)
     .Model(m =>
     {
         m.Id(f => f.NodeId);
         m.ParentId(f => f.ParentNodeId).DefaultValue(sessionUser.DepartmentId);
         m.Field(f => f.FiscalYear).DefaultValue(sessionUser.CurrentFiscalYearId);
         m.Field(f => f.CreatedDateTime);
         m.Field(f => f.DepartmentCode);
         m.Field(f => f.Acronym);
         m.Field(f => f.DepartmentId).DefaultValue(sessionUser.DepartmentId);
         m.Field(f => f.RequiresChildSelect);
         m.Expanded(false);
         m.Field(f => f.Name);
         m.Field(f => f.Level).Editable(false);
         m.Field(f => f.LevelName).Editable(false);
         m.Field(f => f.ParentNodeId);
     })

 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM