如何在Entity Framework上的这个枚举上创建一个Get方法?

时间:2017-07-16 21:32:22

标签: c# asp.net entity-framework enums

我的枚举是:

public class Reminder {


    public String reminderMessage;
    public String senderUID;
    public String senderName;
    public  String receiverUID;
    public  String receiverName;
    public  String reminderTime;
    public  String timestamp;
    public String status;
    public  String receiverUID_status;

    public Reminder() {
        // Default constructor required for calls to DataSnapshot.getValue(User.class)
    }

    public Reminder(String reminderMessage,String senderUID,String senderName,String receiverUID,String receiverName,String reminderTime,String timestamp,String status,String receiverUID_status) {
        this.reminderMessage = reminderMessage;
        this.senderUID =senderUID ;
        this.senderName=senderName;


        this.receiverUID=receiverUID;
        this.receiverName=receiverName;

        this.reminderTime=reminderTime;
        this.timestamp=timestamp;
        this.status=status;
        this.receiverUID_status=receiverUID_status;
    }

如何让HttpGet在我的api中在Json上显示它?

1 个答案:

答案 0 :(得分:2)

您可以使用此功能:

public class EnumModel<T>
{
    public string StringValue { get; set; }
    public T EnumValue { get; set; }
    public int IntValue { get; set; }
    public string DisplayName { get; set; }
    public static List<EnumModel<T>> GetModel()
    {
        var t = typeof(T);
        var fields = t.GetFields();
        return  fields.Where(x => x.CustomAttributes.Any(z => z.NamedArguments.Any(n => n.MemberName == "Name"))).Select(x =>
        new EnumModel<T>
        {
            StringValue = x.Name,
            EnumValue = (T)Enum.Parse(t, x.Name),
            IntValue = (int)Enum.Parse(t, x.Name),
            DisplayName = (string)x.CustomAttributes.Select(z => z.NamedArguments.First(n => n.MemberName == "Name").TypedValue).First().Value,


        }).ToList();
    }
}

用法:

var modelList = EnumModel<AlunoSexo>.GetModel();
string json = new JavaScriptSerializer().Serialize(modelList);
return new View(ModelList);

您的JSON将如下所示:

[
   {
      "StringValue":"M",
      "EnumValue":1,
      "IntValue":1,
      "DisplayName":"Masculino"
   },
   {
      "StringValue":"F",
      "EnumValue":2,
      "IntValue":2,
      "DisplayName":"Feminino"
   }
]

或者,您可以使用自定义库进行Javascript序列化,例如Newtonsoft.Json,并更改装饰enum以使用该库的方式。

这里有几个例子:How to tell JSON.NET StringEnumConverter to take DisplayName?