【问题标题】:How to Send Additional Data in Kendo Grid's AJAX Create如何在 Kendo Grid 的 AJAX 创建中发送附加数据
【发布时间】:2023-03-10 10:11:02
【问题描述】:

我可以使用这样的模式向 Kendo 网格的 AJAX 读取操作发送附加数据...

@(Html.Kendo().Grid<ModelClass>()
   .DataSource(dataSource => dataSource
      .Ajax()
      .Read(read => read.Action("Read", "Controller").Data("getAdditionalData"))

function getAdditionalData() {
    return {
        AdditionalData: 'data'
    };
}

public ActionResult Read([DataSourceRequest] DataSourceRequest request, String additionalData)
{
}

...但是如何向创建操作发送附加数据?在我的场景中,创建需要用户未输入的信息,但在视图中和 getAdditionalData() 的返回中都可用。我尝试使用以下方法传递它,但 action 方法没有接收到它。

.Create(create => create.Action("Create", "Controller").Data("getAdditionalData"))

public ActionResult Create([DataSourceRequest] DataSourceRequest request, ModelClass model, String additionalData)

这是怎么做到的?或者如何将其他数据传递给 AJAX 创建操作?

参考文档:

更新解决方案:

事实上,网格的视图模型(例如“ModelClass”)和客户端数据模型之间不能有重复的字段名称(例如“additionalData”)。当我清理要发布的代码时,这在问题中并不明显。不确定这是否发生在 javascript、MVC 或 Telerik 层。

解决方案是将客户端数据模型的字段名称更改为与网格视图模型中的字段名称不同。

使用其他解决方案更新:

另一种选择是在网格的视图模型中设置字段的默认值以进行创建操作,如下所示:

.DataSource(dataSource => dataSource
    .Ajax()
    .Model(model => {
        model.Field(x => x.Id)              // Set default value for grid model field
            .DefaultValue(Model.DefaultId); // as provided by controller in view model.
    })

【问题讨论】:

    标签: asp.net-mvc-4 kendo-grid


    【解决方案1】:

    我遇到了同样的问题,我解决了。

    public ActionResult Create([DataSourceRequest] DataSourceRequest request, ModelClass model, String additionalData)
    

    在这一行中,将 String 更改为 string,将 AdditionalData 更改为 AdditionalData,与您的 js 中的单词相同。

    还有一点,在 DataSource 的 .Events 子句中,不要放在最后 .RequestEnd("getAdditionalData")

    通常它会起作用。

    希望对您有所帮助!

    【讨论】:

      猜你喜欢
      • 2014-06-07
      • 1970-01-01
      • 1970-01-01
      • 2015-01-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多