【发布时间】: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 创建操作?
参考文档:
- http://docs.telerik.com/kendo-ui/getting-started/using-kendo-with/aspnet-mvc/helpers/grid/ajax-binding#pass-additional-data-to-the-action-method
- http://docs.telerik.com/kendo-ui/getting-started/using-kendo-with/aspnet-mvc/helpers/grid/ajax-editing
更新解决方案:
事实上,网格的视图模型(例如“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.
})
【问题讨论】: