【问题标题】:getting value from Enum in knockout在淘汰赛中从 Enum 中获取价值
【发布时间】:2019-01-07 23:18:51
【问题描述】:

在我的控制器中,我创建了类似

的方法
[HttpGet]
    public IEnumerable<MyEnum> GetMyEnum()
    {
        return Enum.GetValues(typeof(MyEnum)).Cast<MyEnum>();
    }

然后在我的淘汰赛中,我想像这样得到它

  $.getJSON(BASE_PATH + 'mycontroller/GetMyEnum', function (data) {

            $.each(data, function (key, value) {
                self.myEnumbservable.push({ "key": key, "value": value });
            });

        });

这里是枚举

  public enum TypeOfGoodsEnum
{
    Cat= 10, 
    Dog= 20

}

我可以击中控制器,但在淘汰赛中我没有得到任何东西。有人可以指导我。我是新手。

【问题讨论】:

    标签: c# knockout.js controller


    【解决方案1】:

    您可以返回字典以实现您在此处尝试执行的操作:

    [HttpGet]
    public IDictionary<string, int> GetMyEnum()
    {
        return Enum.GetValues(typeof(MyEnum))
                .Cast<MyEnum>()
                .ToDictionary(t => t.ToString(), t => (int)t);
    }
    

    另外你必须编辑淘汰赛部分:

     $.getJSON(BASE_PATH + 'mycontroller/GetMyEnum', function (data) {
            var enumArray = [];
            $.each(data, function (key, value) {
                enumArray.push({ "key": key, "value": value });
            });
            self.myEnumbservable(enumArray);
        });
    

    【讨论】:

    • 不知道为什么它在碰到控制器后没有进入循环。
    • 当我改变 return 像 return JsonConvert.SerializeObject(collection) 然后它的工作。为什么_
    • @Happy 你不能简单地从控制器返回枚举列表。您必须转换它们或使用 StringEnumConverter。请查看我的更新答案。
    • 我删除了循环,而是使用了更优雅的 ToDictionary。
    猜你喜欢
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 2013-12-06
    • 2013-10-25
    • 1970-01-01
    • 1970-01-01
    • 2016-06-13
    • 2011-12-23
    相关资源
    最近更新 更多