You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

将Kendo Grid的JS代码移至外部文件时如何获取控制器作者数据

解决方案:通过控制器获取作者数据并迁移JS到外部文件

我来帮你解决这个问题——把Kendo Grid的编辑器逻辑移到外部JS文件,同时通过控制器获取作者数据其实很简单,分两步走就行:

1. 创建控制器方法返回作者数据

首先在你的控制器(比如AuthorsController)里添加一个Action,专门用来返回作者的Json数据:

// ASP.NET MVC 写法
public ActionResult GetAuthors()
{
    // 调用业务层获取所有作者数据,和你原来的逻辑一致
    var authors = LibraryApp.BLL.ViewModels.AuthorViewModel.GetAll();
    // 允许GET请求获取Json数据
    return Json(authors, JsonRequestBehavior.AllowGet);
}

// 如果是ASP.NET Core,写法更简洁:
public IActionResult GetAuthors()
{
    var authors = LibraryApp.BLL.ViewModels.AuthorViewModel.GetAll();
    return Json(authors);
}

这个方法的作用是从业务层拉取作者数据,序列化为Json格式返回给前端,相当于一个小型的API接口。

2. 修改外部JS文件中的编辑器函数

接下来在你的外部JS文件里,把原来依赖Razor语法的数据源替换成远程请求,让Kendo MultiSelect通过AJAX从刚才的控制器方法获取数据:

function authorsEditor(container, options) {
    $('<input name="Authors">').appendTo(container)
        .kendoMultiSelect({
            dataValueField: "AuthorId",
            dataTextField: "AuthorName",
            dataSource: {
                transport: {
                    read: {
                        url: "/Authors/GetAuthors", // 替换成你控制器的实际路由
                        dataType: "json"
                    }
                }
            }
        });
}

关键说明:

  • 这里用transport.read指定了控制器方法的URL,Kendo会自动发起GET请求获取数据
  • 确保URL和你的控制器路由匹配,比如如果控制器是LibraryController,URL就要改成"/Library/GetAuthors"
  • 你可以先在浏览器直接访问这个URL,确认能返回正确的作者Json数据,避免后续排查问题

这样一来,你的JS代码就完全脱离了Razor语法,可以安心放在外部文件里,同时数据获取逻辑也迁移到了后端控制器,维护起来更清晰。

内容的提问来源于stack exchange,提问作者Vlad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 10:22:19