我在我的模型中使用ENUM类。我需要在网格中显示相关的字符串。
public enum FileStatus
{
New = 1,
Working = 2,
Competed = 3
}
模特 -
public class FileInformation
{
[Key]
public Guid Id { get; set; }
public String RFQ { get; set; }
public String FileName { get; set; }
public String CustomerName { get; set; }
public FileType FileTypeId { get; set; }
public FileStatus FileStatusId { get; set; }
public DateTime DateCreated { get; set; }
public String CreatedBy { get; set; }
public DateTime DateModified { get; set; }
public String ModifiedBy { get; set; }
public virtual ICollection<FileStatus> FileStatus { get; set; }
public virtual ICollection<FileType> FileType { get; set; }
private FileInformation()
{
Id = SequentialGuid.Create(SequentialGuidType.SequentialAtEnd);
}
显示结果的HTML视图 -
<td>{{files.fileStatusId}}</td>
现在表中的输出是1,这是正确的,但我需要显示文本“新”。我需要做些什么才能做到这一点?
答案 0 :(得分:4)
如果您使用JSON.Net将对象发送到angularjs,那么您只需使用StringEnumConverter
将值序列化为字符串而不是int。
[JsonConverter(typeof(StringEnumConverter))]
public FileType FileTypeId { get; set; }
答案 1 :(得分:0)
一种可能的解决方案是让客户端知道 enum类型,方法是在客户端中使用这些枚举。
维护可能听起来乏味且可怕,特别是如果你考虑系统中的所有枚举。它就是!
这就是为什么我建议您查看T4模板,并在您的枚举中使用自定义属性,以自动构建您的枚举并在构建/部署时将其添加到客户端。这样你就不必担心这个。
最后你会得到什么?
您将拥有以下Javascript代码,可帮助您在枚举的文本和值之间切换:
var FileStatus;
(function (FileStatus) {
FileStatus[FileStatus["New"] = 1] = "New";
FileStatus[FileStatus["Working"] = 2] = "Working";
FileStatus[FileStatus["Competed"] = 3] = "Competed";
})(FileStatus || (FileStatus = {}));
这样你得到:
FileStatus[1]; // "New"
FileStatus["New"]; // 1