您需要使用模板。
在您的模型中有另一个与名称相关的字段(您需要在编辑时将其设置为正确的值),然后使用“#=name#”之类的模板
首先像这样创建您的列:
columns.Bound(x => x.ForeignKey).ClientTemplate("#=Name#");
然后在控制器的 Update 方法中,将视图模型上的 Name 属性设置为您想要的。
viewModel.Name = GetName(viewModel.ForeignKey);
return this.Json(new[] { viewModel }.ToDataSourceResult(request, this.ModelState));
编辑 2:要在 javascript 模式下构建网格,您需要像这样定义列:
{ field: "ForeignKey", title: "Foreign Key", template: '#=Name#', editor: myEditor}
然后像这样定义你的编辑器:
function myEditor(container, options) {
$('<input required data-text-field="ForeignKeyName" data-value-field="ForeignKey" data-bind="value:' + options.field + '"/>')
.appendTo(container)
.kendoDropDownList({
autoBind: false,
dataSource: myDataSource
});
}
您可能仍然需要设置该值,但是,如果您想在服务器端执行此操作,您可以使用我上面提到的方法,如果您想在客户端执行此操作,您将需要处理网格保存事件并设置那里的数据源中的值。
希望这可以帮助。