使用 Knockout、MVC 和 Kendo 时,在控制器“Web.Controllers.HomeController”上找不到公共操作方法“未定义”

Posted

技术标签:

【中文标题】使用 Knockout、MVC 和 Kendo 时,在控制器“Web.Controllers.HomeController”上找不到公共操作方法“未定义”【英文标题】:A public action method 'undefined' was not found on controller 'Web.Controllers.HomeController'., when using Knockout, MVC, and Kendo 【发布时间】:2021-03-16 11:24:46 【问题描述】:

我们在 MVC (.NET 4.5.1) 中有一个使用 Kendo 和 Knockout 的应用程序。 直到上周我们将 Kendo 库从 2018 年升级到 2020 年之前,它都运行良好。 (2020.2.617)。

现在,我们在 Global.asaxApplication_Error 中一直收到此错误:

在控制器“Web.Controllers.HomeController”上找不到公共操作方法“未定义”

这是导致问题的相关代码,我已将其复制/粘贴到应用程序的其他页面中进行测试,但我在 Global.asax 中总是遇到同样的错误。

<div id="divId" data-bind="kendoWindow:  isModal: true, widget: widget ">
    <textarea id="dummyId" data-bind="kendoEditor:  value: 'title', widget: editor "></textarea>
</div>

<script type="text/javascript">
    var test = function () 
        var self = this;
        self.editor = ko.observable();
        self.widget = ko.observable();
    

    ko.applyBindings(new test(), document.getElementById("divId"));

</script>

如果我删除了其中一个组件,无论是 KendoWindow 还是 KendoEditor,它都不会给出异常。

我们正在 BundleConfig.cs 中加载所有新的剑道库,而不是升级之前。

任何想法可能是导致此问题的原因以及如何解决?回到剑道 2018,不再是一个选择。

【问题讨论】:

所以我对MVC了解不多,但是为什么前端代码会出现后端错误呢?如果其中任何一个有效,那么第一个绑定触发可能会以某种方式修改 html,从而导致第二个失败? 实际上,一切都按预期工作,屏幕上没有任何错误。问题是它以某种方式到达后端并出现该错误。我仍在调查,但我几乎可以肯定这是新剑道 2020 的问题 【参考方案1】:

我刚刚看到最新版本的 Kendo (2020.3.915) 中有一个修复程序可以解决该问题:

https://www.telerik.com/support/whats-new/kendo-ui/release-history/kendo-ui-r3-2020?_ga=2.175661665.2102584926.1606749571-1674673946.1605197457

【讨论】:

以上是关于使用 Knockout、MVC 和 Kendo 时,在控制器“Web.Controllers.HomeController”上找不到公共操作方法“未定义”的主要内容,如果未能解决你的问题,请参考以下文章

Knockout Kendo 下拉列表获取所选项目的文本

使用 knockout-kendo.js 和breeze.js 时不显示DropDownList 值

Knockout 验证不适用于 Kendo 文本编辑器

Knockout 绑定到 Kendo 控件

大规模 MVC Web 应用程序 - 使用 Knockout 和 Razor

Kendo UI Web 和 Kendo UI ASP.NET for MVC 之间的区别