运行Infragistics Tree Control时,Object不支持属性或方法'igTree'错误

时间:2014-10-15 20:05:26

标签: asp.net-mvc-5 infragistics

我正在尝试使用实体框架数据对象(MVC 5中的EF 6)来设置树视图。当我尝试渲染()我的树时,我遇到了一个问题....我收到的对象不支持属性或方法' igTree'''''''''''''''&#39 ;错误。

设置树的代码(在我看来):

@(Html.Infragistics()
      .Tree()
      .Bindings(bindings =>
      {
          bindings.
          TextKey("L1Name").
          PrimaryKey("L1TODSID").
          ValueKey("L1TODSID").
          ChildDataProperty("L2Name").
          Bindings(b1 =>
          {
              b1.
              TextKey("L2Name").
              ValueKey("L2TODSID").
              PrimaryKey("L2TODSID");
          });
      })
      .DataSource(Model)
      .DataBind()
      .Render() 
)

在我添加' Render()'之前我没有错误。调用

我在Infragistics论坛上看了一篇文章,询问他们是否会支持MVC 5 ......他们不这样做吗?这是我的问题吗?

另外,这些是我的调用脚本:

    <!-- Ignite UI Required Combined CSS Files -->
    <link href="@Url.Content("~/igniteui/css/themes/infragistics/infragistics.theme.css")" rel="stylesheet" />
    <link href="@Url.Content("~/igniteui/css/structure/infragistics.css")" rel="stylesheet" />

    <script src="@Url.Content("~/Scripts/modernizr-2.7.2.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery-2.0.3.min.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery-ui-1.10.3.min.js")"></script>


    <!-- Ignite UI Required Combined JavaScript Files -->
    <script src=@Url.Content("~/igniteui/js/infragistics.core.js")></script>
    <script src=@Url.Content("~/igniteui/js/infragistics.lob.js")></script>


   @(Html.Infragistics()
          .Loader()
          .ScriptPath("~/igniteui/js/")
          .CssPath("~/igniteui/css/")
          .Render()
    )

提前致谢!

编辑:最终解决。

以防其他任何人遇到这种情况......

我知道这个错误(&#39;对象不支持属性或方法......&#39;)可能是由jquery加载两次引起的。以为我彻底检查了所有脚本调用。然而,作为.NET和MVC 5(razor)的新手,我在布局页面的 end 完全错过了这一行(我最初没有设置项目):

@Scripts.Render("~/bundles/jquery")

因此...

最后,我在顶部的脚本块中初始化JQuery(调用缩小的文件),然后我再次调用它,这就是导致错误的原因。

非常感谢@nemesv,因为他解释加载过程的细节比我在网上找到的更详细,这让我有信心知道我在这方面正确地做事。然后我只需要追捕第二次调用来初始化JQ。

再次感谢!

2 个答案:

答案 0 :(得分:3)

默认情况下(如果您没有使用加载程序基础结构)

.Render()调用将呈现以下HTML:

 <script type="text/javascript">
     $(function () {$('#Tree1').igTree({ dataSource: ... });});
 </script>

因此,您将在igTree函数调用上获得异常,该函数将初始化树。

您的igTree函数可能未定义:

  • 如果您没有加载必要的igniteui脚本:

    <script src=@Url.Content("~/igniteui/js/infragistics.core.js")></script>
    <script src=@Url.Content("~/igniteui/js/infragistics.lob.js")></script>
    

    确保您的视图或Layour文件中包含这些脚本

  • 如果您没有使用rigth路径,或者服务器上没有脚本文件:

    检查浏览器网络控制台中的链接是否断开(FF中的F12 / Chrome中的Chrome FireBug):

    enter image description here

    如果脚本旁边出现404错误,您将知道它们未正确加载,您需要修复路径。

  • 如果您多次引用jQuery也会导致此错误:

    例如,你有一个部分的<script src="@Url.Content("~/Scripts/jquery-2.0.3.min.js")"></script>多次被Ajax加载,等等。

    确保您引用所有脚本一次。

在使用loader

的情况下

使用Loader infrasturure时,.Render()调用将呈现不同的HTML:

<script type="text/javascript">
    $.ig.loader('igTree', function() {$('#Tree1').igTree({ dataSource: });});
</script>

因此加载器将加载树所需的必要脚本,因此您不需要包含infragistics.core.jsinfragistics.lob.js。 在理论上使用加载器时,你无法获得异常。

但是如果你在@(Html.Infragistics().Loader()... 后调用:Html.Infragistics().Tree() 那么MVC包装器并不是你正在使用加载器所以它会像你不使用时那样呈现HTML如果你没有引用infragistics.core.jsinfragistics.lob.js,请使用加载器。那么即使你正在“使用”加载器,你也会得到异常。

因此,请确保在使用任何@(Html.Infragistics().Loader()...控件之前致电Infragistics

答案 1 :(得分:2)

我也遇到了与MVC 4和Ignite UI相同的问题。删除@ Scripts.Render(&#34;〜/ bundles / jquery&#34;) 来自_Layout.cshtml解决了这个问题。