我正在尝试使用实体框架数据对象(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。
再次感谢!
答案 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):
如果脚本旁边出现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.js
和infragistics.lob.js
。
在理论上使用加载器时,你无法获得异常。
但是如果你在@(Html.Infragistics().Loader()...
后调用:Html.Infragistics().Tree()
那么MVC包装器并不是你正在使用加载器所以它会像你不使用时那样呈现HTML如果你没有引用infragistics.core.js
和infragistics.lob.js
,请使用加载器。那么即使你正在“使用”加载器,你也会得到异常。
因此,请确保在使用任何@(Html.Infragistics().Loader()...
控件之前致电Infragistics
。
答案 1 :(得分:2)
我也遇到了与MVC 4和Ignite UI相同的问题。删除@ Scripts.Render(&#34;〜/ bundles / jquery&#34;) 来自_Layout.cshtml解决了这个问题。