【问题标题】:jQuery(...).kendoGrid is not a functionjQuery(...).kendoGrid 不是函数
【发布时间】:2020-08-11 11:47:13
【问题描述】:

我正在尝试创建一个 Kendo Grid,但我一直收到同样的错误,说 kendoGrid 不是一个函数:

这是我的看法:

@model IEnumerable<ModelLayer.Models.TableNotificationModel>
@addTagHelper *, Microsoft.AspNetCore.Mvc.TagHelpers
@addTagHelper *, Kendo.Mvc
@using Kendo.Mvc.UI
@{
    ViewData["Title"] = "Index";
}

<script src="https://code.jquery.com/jquery-1.12.3.min.js">
    window.rootUrl = '@Url.Content("~/")';
</script>
<script src="https://kendo.cdn.telerik.com/2020.2.617/js/kendo.all.min.js"></script>
<script src="https://kendo.cdn.telerik.com/2020.2.617/js/kendo.aspnetmvc.min.js"></script>
<h1>Upload index</h1>


<div>
    <h4>Upload file</h4>
    <form asp-controller="Upload" asp-action="Upload"
          enctype="multipart/form-data" method="post">
        <input type="file" name="file" />
        <button type="submit" id="btn">Upload</button>
    </form>

    @if (ViewBag.Message != null)
    {
        <script>
        $(document).ready(function(){
            alert('@Html.Raw(ViewBag.Message)');
        });
        </script>
    }


</div>


<div class="clearfix">
    @(Html.Kendo().Grid<ModelLayer.Models.TableNotificationModel>()
        .Name("notificationGrid")
        .Columns(columns =>
        {
            columns.Bound(c => c.OPERATOR_OBJECTID).Title("ID").Hidden();
            columns.Bound(c => c.SETTLEMENT_CODE).Title("settlement code").Width("100px");
            columns.Bound(c => c.TECHNOLOGY_CODE).Title("tech code").Width("100px");
            columns.Bound(c => c.UPLOAD_SPEED_CLASS_CODE).Title("upload").Width("100px");
            columns.Bound(c => c.DOWNLOAD_SPEED_CLASS_CODE).Title("download").Width("100px");
            columns.Bound(c => c.DATA_CATEGORY_QOS_CODE).Title("data category").Width("100px");
            columns.Bound(c => c.SHAPE).Title("shape").Width("100px");
            //columns.Bound(c => c.Message).Title("message").Width("100px");
        })
        .DataSource(dataSource => dataSource
            .Ajax()
            .PageSize(20)
            .Read(read => read.Action("Upload_Read", "Upload"))
            )
    )

</div>

我确保没有两次使用 jQuery 脚本,所以这是我的 _Layout。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>@ViewData["Title"] - M20_AEK</title>
    <link rel="stylesheet" href="~/lib/bootstrap/dist/css/bootstrap.min.css" />
    <link rel="stylesheet" href="~/css/site.css" />

    
</head>
<body>
    <header>
        <nav class="navbar navbar-expand-sm navbar-toggleable-sm navbar-light bg-white border-bottom box-shadow mb-3">
            <div class="container">
                <a class="navbar-brand" asp-area="" asp-controller="Home" asp-action="Index">M20_AEK</a>
                <button class="navbar-toggler" type="button" data-toggle="collapse" data-target=".navbar-collapse" aria-controls="navbarSupportedContent"
                        aria-expanded="false" aria-label="Toggle navigation">
                    <span class="navbar-toggler-icon"></span>
                </button>
                <div class="navbar-collapse collapse d-sm-inline-flex flex-sm-row-reverse">
                    <ul class="navbar-nav flex-grow-1">
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Index">Home</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-controller="CustomerType" asp-action="LoadCustomerType">Customer Type</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-controller="DataCategory" asp-action="LoadDataCategory">Data Category</a>
                        </li>
                        <li class="nav-item">
                            <a class="nav-link text-dark" asp-area="" asp-controller="Upload" asp-action="Index">Upload</a>
                        </li>
                    </ul>
                </div>
            </div>
        </nav>
    </header>
    <div class="container">
        <main role="main" class="pb-3">
            @RenderBody()
        </main>
    </div>

    <footer class="border-top footer text-muted">
        <div class="container">
            &copy; 2020 - M20_AEK - <a asp-area="" asp-controller="Home" asp-action="Privacy">Privacy</a>
        </div>
    </footer>
    <script src="~/lib/jquery/dist/jquery.min.js"></script>
    <script src="~/lib/bootstrap/dist/js/bootstrap.bundle.min.js"></script>
    <script src="~/js/site.js" asp-append-version="true"></script>
    @RenderSection("Scripts", required: false)
</body>
</html>

这是我的控制器:

public ActionResult Upload_Read([DataSourceRequest] DataSourceRequest request)
        {
            return Json(json_read.ToDataSourceResult(request));
        }

我尝试将 Kendo 和 jQuery 脚本放在 _Layout 中,但没有帮助。我为 Kendo 网格的列和列菜单和字段尝试了不同的格式,但它仍然抛出相同的错误。 可能是什么问题?

【问题讨论】:

  • 如果您将所有&lt;script&gt; 标签从末尾移到前面(即在头部),问题会消失吗?
  • 你能在布局的顶部加载 Jquery 脚本吗
  • &lt;script src="https://code.jquery.com/jquery-1.12.3.min.js"&gt; window.rootUrl = '@Url.Content("~/")'; &lt;/script&gt; 这让我觉得很奇怪 - 在标签内也有 src 和代码。另外,您似乎正在加载两个 jquery 副本(因为您还有 &lt;script src="~/lib/jquery/dist/jquery.min.js"&gt;&lt;/script&gt;)。
  • 我从脚本标签&lt;script&gt; window.rootUrl = '@Url.Content("~/")';&lt;/script&gt; 中删除了链接,现在它显示了网格。您能否将此作为答案发布,以便我将其标记为正确? @mjwills

标签: c# kendo-ui kendo-grid


【解决方案1】:
<script src="https://code.jquery.com/jquery-1.12.3.min.js">
    window.rootUrl = '@Url.Content("~/")'; </script>

看起来无效(您通常在标签内有src 或代码 - 不是两者都有)。我建议删除src

【讨论】:

    【解决方案2】:

    我找到了解决方案。如果您使用的是任何版本的 jQuery Office,请查找附加到您的项目的插件文件,其中包含 jQuery 代码并完全删除下一行:

    ( !function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0): )
    

    到行尾

    {return C.$===k&&(C.$=Jt),e&&C.jQuery===k&&(C.jQuery=Qt),k},e||(C.jQuery=C.$=k), k});
    

    因为它会在 jQuery.js 文件中复制。这就是导致错误的原因:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-03
      • 1970-01-01
      • 2018-10-01
      • 2016-11-01
      • 2014-03-26
      • 2020-10-15
      • 2016-12-16
      • 2017-08-22
      相关资源
      最近更新 更多