为什么kendogrid没有生成任何html输出,也没有服务器端/客户端错误

本文关键字:服务器端 客户端 错误 html kendogrid 任何 为什么 输出 | 更新日期: 2023-09-27 18:22:19

我的一个视图中有这个剑道网格:

@model IEnumerable<IJRayka.Core.Utility.ViewModels.OrderDto>
@using IJRayka.Core.Web.Code
@{
    ViewBag.Title = "Order List";
}
<h2>Order List</h2>
    @{
Html.Kendo().Grid(Model).Name("grid").Columns(columns =>
    {
        columns.Bound(ord => ord.CustomerName);
        columns.Bound(ord => ord.MarketerName);
        columns.Bound(ord => ord.OrderDate);
        columns.Template(ord => ord.CurrentStatus.GetDisplayName());
        columns.Bound(ord => ord.PaymentMethod);
        columns.Bound(ord => ord.Description);
        columns.Command(cmd => cmd.Edit().Text("ویرایش"));
        columns.Command(cmd => cmd.Select().Text("مشاهده"));
        columns.Command(cmd => cmd.Destroy().Text("حذف"));
    }).DataSource(ds => ds.Server()
        .Model(m => m.Id(ord => ord.ID))
            .Create(create => create.Action("Create", "OrderManagement"))
            .Read(read => read.Action("Details", "OrderManagement"))
            .Update(update => update.Action("Edit", "OrderManagement"))
            .Destroy(destroy => destroy.Action("Delete", "OrderManagement"))
        ).Pageable().Sortable()
    .ToolBar(toolbar => toolbar.Create().Text("ایجاد سفارش"))
    .Selectable(selectable => selectable.Mode(GridSelectionMode.Single)));
}

当我调试时,我看到Model集合中有4个项目,但我不知道为什么如果没有任何错误,网格根本不会显示。客户端没有生成任何HTML标记,firebug控制台中也没有显示任何错误。

它以前工作得很好,但突然之间,在我的模型发生了一些变化后,我不知道它发生了什么

编辑:我刚刚意识到,如果我把所有的行都写下来,在中只有一行就行了!但我不明白为什么?

为什么kendogrid没有生成任何html输出,也没有服务器端/客户端错误

当您使用构造@{ .. }时,您就在剃刀中的代码块中。在代码块内部,默认情况下不会向响应写入任何内容。

您需要使用@向输出输出一些内容,或者您需要在网格上使用一些特殊的方法,如Render()

因此,以下调用都在工作:

在任何剑道小工具上使用Render

@{
    Html.Kendo().Grid(Model).Name("grid").Columns(columns =>
    {
      //...
    })
    .Selectable(selectable => selectable.Mode(GridSelectionMode.Single)))
    .Render(); //Render method provided by Kendo UI.
}

使用@:

@{
    @(Html.Kendo().Grid(Model).Name("grid").Columns(columns =>
    {
      //...
    })
    .Selectable(selectable => selectable.Mode(GridSelectionMode.Single))))
}

或者,如果你在代码块中有这样一条语句,根本不要使用代码块,只需写:

@(Html.Kendo().Grid(Model).Name("grid").Columns(columns =>
{
    //...
})
.Selectable(selectable => selectable.Mode(GridSelectionMode.Single))))

注意:如果在@之后有一个多行语句,则需要用一组额外的parens(())来包装整个语句