【问题标题】:jqGrid MVC Error: "Uncaught ReferenceError: AutoComplete_acid is not defined"jqGrid MVC 错误:“未捕获的 ReferenceError:未定义 AutoComplete_acid”
【发布时间】:2015-07-09 13:28:50
【问题描述】:

我对 MVC 和 JQGrid 都很陌生。我在让 AutoComplete 或 DatePicker 进行编辑或搜索时遇到问题。

我假设(希望)一种解决方案可以解决这两个问题,因为我在这两个问题上都遇到了类似的错误,因此我暂时将其简化为 AutoComlete 以简化事情。

我一直在关注http://www.trirand.net/aspnetmvc/grid/performancelinqsearch 的示例 让 AutoComplete 在列上方的搜索工具栏中工作。

似乎无论我尝试什么,AutoComplete 都不起作用,并且我在 Chrome 的开发控制台中收到此错误:“Uncaught ReferenceError: AutoComplete_acid is not defined”。

这是我的看法。我已禁用主布局以防引起任何冲突。我尝试使用 jqGrid 下载附带的 jQuery 版本而不是最新版本。当我排除自动完成脚本时,我没有收到有关自动完成缺失或加载资源失败的警报。

@model MRA_Survey_Manager.Models.ESLogModel
@using Trirand.Web.Mvc

<!DOCTYPE html>
<html lang="en-us">
<head>
    <meta charset="utf-8">
    <title>MRA Survey Manager</title>      
    <link rel="stylesheet" type="text/css" href="~/Content/themes/base/jquery-ui.css" />
    <link rel="stylesheet" type="text/css" href="~/Content/jquery.jqGrid/ui.jqgrid.css" />
    <script type="text/javascript" src="~/Scripts/jquery-2.1.4.min.js"></script>
    <script type="text/javascript" src="~/Scripts/jqGrid/i18n/grid.locale-en.js"></script>
    <script type="text/javascript" src="~/Scripts/jqGrid/jquery.jqGrid.min.js"></script>
    <script type="text/javascript" src="~/Scripts/jqGrid/jquery.jqAutoComplete.min.js"></script>
    <script type="text/javascript" src="~/Scripts/jqGrid/CustomValidators.js"></script>
</head>
<body>
    <div style="Width:100%">
        @Html.Trirand().JQGrid(Model.ESLogGrid, "ESLogGrid")

        @{
            Html.Trirand().JQAutoComplete(
            new JQAutoComplete
            {
                DisplayMode = AutoCompleteDisplayMode.ControlEditor,
                DataField = "Carrier",
                DataUrl = Url.Action("AutoCompleteCarrier", "ESLogGrid")
            }, "AutoComplete");
        }
    </div>
</body>
</html>

在我的控制器中,我有:

public JsonResult AutoCompleteCarrier(string term)
{
    JQAutoComplete autoComp = new JQAutoComplete();

    autoComp.DataField = "Carrier";
    autoComp.AutoCompleteMode = AutoCompleteMode.BeginsWith;
    autoComp.DataSource = from survey in db.MRA_SurveyLog
                          select survey;

    return autoComp.DataBind();
}

在我的网格设置中:

JQGridColumn column = logGrid.Columns.Find(c => c.DataField == "Carrier");
column.SearchType = SearchType.AutoComplete;
column.Searchable = true;
column.DataType = typeof(string);
column.SearchControlID = "AutoComplete";
column.SearchToolBarOperation = SearchOperation.BeginsWith;

我已经检查了http://www.trirand.net/forum/default.aspx?g=posts&t=2902列出的三件事

我已经为此苦苦挣扎了一段时间。任何帮助将不胜感激。

【问题讨论】:

    标签: asp.net-mvc razor jqgrid-asp.net


    【解决方案1】:

    我终于明白了。结果是视图中的 Razor 语法存在问题。由于某种原因,在多语句块中定义 AutoComplete 对象会导致该错误。

    将其更改为单个语句解决了该问题。

     @Html.Trirand().JQAutoComplete(new JQAutoComplete{DisplayMode = AutoCompleteDisplayMode.ControlEditor, DataField = "Carrier", DataUrl = Url.Action("AutoCompleteCarrier", "ESLogGrid")}, "AutoComplete")
    

    编辑:在解决了我最近遇到的另一个 Razor 语法问题后,我想回来更新这个解决方案。问题在于我对语法的理解,而不是 jqGrid 本身。当您在多语句块中有花括号时,您显然必须将该部分包装在文本标签中。所以以下也应该起作用:

    @{ 
        <text>    
        @Html.Trirand().JQAutoComplete(
        new JQAutoComplete
        {
            DisplayMode = AutoCompleteDisplayMode.ControlEditor,
            DataField = "Carrier", 
            DataUrl = Url.Action("AutoCompleteCarrier", "ESLogGrid")
        }, "AutoComplete")
        </text>
     }
    

    更多信息请访问:https://stackoverflow.com/a/6099659/1451531

    【讨论】:

      猜你喜欢
      • 2020-02-02
      • 2014-10-21
      • 2023-03-04
      • 2019-12-28
      • 1970-01-01
      • 2012-08-27
      • 2015-07-11
      • 2020-07-13
      • 2018-01-25
      相关资源
      最近更新 更多