Enums breeze是否为使用c#enum提供支持
我想使用breeze用enum填充我的下拉列表。它在breeze元数据中显示了enum,但我没有找到使用它的方法。breeze是否提供了对c#enums的支持?如果您使用的是标准的breeze WebApi服务器,则枚举值应全部以字符串形式存在,并可以以字符串形式保存回服务器。开箱即用,默认的Breeze WebApi服务器实现将在两个方向上自动将字符串转换为正确的枚举值 (注意:这不适用于使用当前MS WebApi/OData提供程序的服务器,因为MS还不支持使用此提供程序的枚举-MS将在其即将发布的4.0版本中支持此功能。) 例如,假设您的服务器端枚举如下所示:Enums breeze是否为使用c#enum提供支持,enums,breeze,Enums,Breeze,我想使用breeze用enum填充我的下拉列表。它在breeze元数据中显示了enum,但我没有找到使用它的方法。breeze是否提供了对c#enums的支持?如果您使用的是标准的breeze WebApi服务器,则枚举值应全部以字符串形式存在,并可以以字符串形式保存回服务器。开箱即用,默认的Breeze WebApi服务器实现将在两个方向上自动将字符串转换为正确的枚举值 (注意:这不适用于使用当前MS WebApi/OData提供程序的服务器,因为MS还不支持使用此提供程序的枚举-MS将在其即
public enum RoleType {
Guest = 0,
Restricted = 1,
Standard = 2,
Admin = 3
}
与具有“RoleType”属性的“Role”类结合使用时,以下查询将起作用:
var query = new EntityQuery("Roles").where("RoleType", "==", 'Restricted');
myEntityManager.executeQuery(query).then(...);
类似地,如果您想更改给定角色的角色类型,则可以
role.RoleType = "Standard"; // assuming breeze backingStore adapter.
myEntityManager.saveChanges();
如果您正在生成脱机breeze元数据,则可以获取元数据本身中的所有枚举定义,并且可以创建JS字典(关联数组)来填充所有枚举类型及其定义 我的情况是,我在我的web项目中使用了NancyFx(无EF)+Breeze+AngularJS。我离线生成元数据并将其存储在metadata.js文件中 在创建EntityManager之后,我在一个JS字典中提取了枚举定义,稍后我将其用于绑定下拉列表、显示相应的枚举字符串等 提取枚举定义并存储在JS字典中
JSON.parse(window.app.metadata).schema.enumType.forEach(function (enumType) {
var newEnumValues = [];
enumType.member.forEach(function (enumValue) {
var newEnumValue = { id: enumValue.value, name: enumValue.name };
newEnumValues.push(newEnumValue);
});
enumDictionary[enumType.name] = newEnumValues;
});
基于枚举名称和valueid检索枚举值的方法
function GetEnumDictionaryValue(enumName, enumValueId) {
var result = null;
enumDictionary[enumName].some(function (enumValue) {
if (enumValue.id == enumValueId) {
result = enumValue.name;
return;
}
});
return result;
}
将值绑定到下拉列表
现在,对于绑定下拉列表,只需调用enumDictionary[]并将结果存储在控制器变量中。
我使用的是Angular JS,所以我在html页面上使用了下面的代码
<select ng-options="type.id as type.name for type in <VariableName>"
></select>
您使用的是Breeze.js还是Breeze.sharp?谢谢您简要的回答。然而,我想知道我是否可以访问枚举以在客户端用它填充下拉列表。怎么可能呢?请建议