问题描述
在我的 ASP.NET MVC 应用程序中,..\Views\Shared_Layout.cshtml 我有以下代码行:
> <script type="text/javascript" src="http://mycontrols.com/Scripts/MyConstants.js"></script>
var MyConstants = function() {
return {
DataObject1: {
MyEnum1: {
Item0: 0,Item1: 1,Item3: 2
}
},DataObject2: {
MyEnum2: {
Item0: 0,Item3: 2
}
}
};
};
现在,从我的观点 (Index.cshtml) 来看,我试图在 javascript 中访问 MyEnum1 中的一个项目:
var myEnum = MyConstants.DataObject1.MyEnum1.Item1;
但它不起作用,在 chrome 中的错误 en devtools 下方:
jQuery.Deferred 异常:无法读取未定义的属性 'MyEnum1' 类型错误:无法读取未定义的属性“MyEnum1”
解决方法
MyConstants
是一个返回对象的函数,因此您需要调用它:
var myEnum = MyConstants().DataObject1.MyEnum1.Item1;
如果您希望保留当前语法来检索值,则需要将 MyConstants
转换为对象:
var MyConstants = {
DataObject1: {
MyEnum1: {
Item0: 0,Item1: 1,Item3: 2
}
},DataObject2: {
MyEnum2: {
Item0: 0,Item3: 2
}
}
};