我想用微风填充我的下拉菜单。它在微风元数据中显示枚举,但我没有找到如何使用它的方法。微风是否为c#enums工作提供了支持?
答案 0 :(得分:0)
如果您使用的是标准的Breeze WebApi服务器,那么枚举值应该全部以字符串形式出现,并且也可以作为字符串保存回服务器。开箱即用,默认的Breeze WebApi服务器实现将在两个方向上自动将字符串转换为正确的枚举值。
(注意:这不适用于使用当前MS WebApi / OData提供程序的服务器,因为MS尚不支持使用此提供程序的枚举 - MS将在即将发布的4.0版本中支持此功能。)
因此,例如,假设您有一个服务器端枚举,如下所示:
public enum RoleType {
Guest = 0,
Restricted = 1,
Standard = 2,
Admin = 3
}
与“角色”相结合具有' RoleType'的类属性,然后以下查询将起作用:
var query = new EntityQuery("Roles").where("RoleType", "==", 'Restricted');
myEntityManager.executeQuery(query).then(...);
同样,如果您想更改给定角色的RoleType,那么您可以
role.RoleType = "Standard"; // assuming breeze backingStore adapter.
myEntityManager.saveChanges();
答案 1 :(得分:0)
如果要生成离线breeze元数据,则可以在元数据本身中获取所有Enums定义,并且可以创建JS Dictionary(关联数组)来填充所有枚举类型及其定义。
嗯我的情况是我在我的网络项目中使用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>