使用 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.asax 的 Application_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.js 和breeze.js 时不显示DropDownList 值