Как передать словарь с пустым массивом в качестве значения - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть class:

public class State{  
        public Dictionary<SecurityType, List<long>> assets { get; set; }
    }

И действие:

[HttpPost]
public virtual ActionResult GetHoldings(State state)
{
        return Json(new HoldingsBL().GetHoldings(state));
}

public enum SecuritySerachType
    {
        Company = 1,
        Security,
    }

, когда я пытаюсь передать что-то вроде этого:

{state:{assets :[{"Key":1,"Value":[]}]}}

iполучил пустой словарь в свойстве актива.

Я уже прочитал это решение, но я не понимаю, как решить мою проблему.

Какое простое решение?

edit: я пытаюсь добавить ValueProviderFactory, как сказал Алексей Аза, но есть проблема с его сравнением с backingStore (уже существует проверка по словарю, возможно, для вложенных объектов):

        var d = value as IDictionary<string, object>;
        if (d != null)
        {
            foreach (var entry in d)
            {
                AddToBackingStore(backingStore, MakePropertyKey(prefix, entry.Key), entry.Value);
            }
            return;
        }

Так что я до сих пор застрял с этой проблемой.

1 Ответ

0 голосов
/ 29 ноября 2018

Попробуйте использовать объектную структуру JSON для словаря C #, например:

using System;
using System.Collections.Generic;
using Newtonsoft.Json;

public class Program
{
    public enum SecuritySerachType
    {
        Company = 1,
        Security,
    }
    public class State{  
        public Dictionary<SecuritySerachType, List<long>> assets { get; set; }
    }

    public static void Main()
    {
        var state = JsonConvert.DeserializeObject<State>(@"{assets :{""1"":[]}}");
        Console.WriteLine(state.assets[SecuritySerachType.Company].Count);
    }
}

Ссылка на dotnet fiddle

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...