MVC Kendo Dropdownlist with EditorFor 渲染存在大量与 JavaScript 相关的

本文关键字:JavaScript 存在 Dropdownlist Kendo with EditorFor MVC | 更新日期: 2023-09-27 18:34:45

这相当复杂,所以请耐心等待。

首先让我说,我对MVC很陌生。我的经验甚至很少,但我对 .NET/C# 的整体开发经验是广泛的。关键是,解决方案可能很简单,我只是不知道,哈哈。

现在。。我们有一个庞大的应用程序,它通过@Html.EditorFor()渲染使用"EditorTemplates"(部分视图(,以便根据需要根据数据库内容呈现自定义的 UI 元素。

现在。。。我的任务是创建其中一个元素,由于我们系统的复杂性以及加载它以进行测试所需的时间,我决定首先在其自己的独立视图/控制器中开发我的 UI/Logic。

该视图由 3 个级联 Kendo 下拉列表组成,这些下拉列表从控制器中的方法中提取数据(返回类对象列表(。

我在独立的视图/控制器中得到了很好的工作。

现在。。。我将 HTML 和逻辑从控制器移植到"EditorTemplates"文件夹中的部分视图文件中,并首次运行我们的应用程序。

我立即收到一个javascript错误

未定义"filterRabu2"。

下面是关联的代码:

<label for="rabu2">Rabu2:</label>
    @(Html.Kendo().DropDownList()
          .Name("rabu2")
          .HtmlAttributes(new { style = "width:300px" })
          .OptionLabel("Select ...")
          .DataTextField("Name")
          .DataValueField("ID")
                  .DataSource(source =>
                  {
                      source.Read(read =>
                      {
                          read.Action("GetRabu2", "Datasets")
                             .Data("filterRabu2");
                      })
                      .ServerFiltering(true);
                  })
            //.Enable(false)
          .AutoBind(false)
          .CascadeFrom("rabu1")
    )
<script>
    function filterRabu2() {
        return {
            rabu1: $("#rabu1").val()
        };
    }
</script>

现在。。。我通过将该功能移动到页面中已经包含的.js文件中来摆脱该错误。

但。。。当下拉列表呈现时,第一个(应启用并存在数据(似乎已禁用且不可单击。我确认我们的数据访问例程正在被命中并返回有效且填充的数据列表,就像它在独立视图中所做的那样(工作(。

这就是我所在的地方...我无法让 DDL 运行,并且该 JS 错误的存在使我推测 JS 没有被渲染或允许正确执行?我不知道。

这是通过 @Html.EditorFor() 方法从循环内的另一个部分视图呈现的,该循环根据该数据呈现数据模板......这很复杂...但我真的可以用一只手来弄清楚发生了什么。

MVC Kendo Dropdownlist with EditorFor 渲染存在大量与 JavaScript 相关的

可能是dom在javascript执行之前就已经渲染了。尝试

$(document).ready(
    function(){
        //initial method call here
}); 

这将确保 javascript 在加载 dom 后执行。