Вызов списка классов из контроллера - PullRequest
0 голосов
/ 26 марта 2019

Как мне вызвать мой список классов с контроллера?

Вот мои модели:

public class AuthJsonResponses
{
    public int Code { get; set; }
    public string Jwt { get; set; }
    //public string[] Message { get; set; }
    public List<RootObject> Message { get; set; }
}

public class RootObject
{
    public string msg { get; set; }
    public string code { get; set; }
}

Это то, что я называю в контроллере:

List<RootObject> rootObj = new List<RootObject>();
rootObj[0].code = "success_04";
rootObj[0].msg = "Access granted";
JsonRes.Message = rootObj;

Однако там, кажется, есть проблема с диапазоном, который я не знаю.Что не так с моим кодом?

Заранее спасибо.

Ответы [ 5 ]

1 голос
/ 26 марта 2019

Вы можете сделать одно из следующих действий:

 List<RootObject> rootObj = new List<RootObject>();
        var newObj=new RootObject()
        {
            code = "success_04",
            msg = "Access granted"
        };
        rootObj.Add(newObj);
        List<RootObject> rootObj1 = new List<RootObject>()
        {
            new RootObject()
            {
                code = "success_04",
                msg = "Access granted"
            }
        };

, а затем

JsonRes.Message = rootObj;
0 голосов
/ 26 марта 2019

Проблема, с которой вы сталкиваетесь, заключается в том, что вы ссылаетесь на первый элемент списка сразу после инициализации списка!Сама инициализация просто создает объект класса List, он не создает никаких элементов !

Итак, вам нужно создать объекты класса RootObject самостоятельно, а затем добавить его в список:

// create object
var r = new RootObject();
r.code = "success_04";
r.msg = "Access granted";
// add it to list
rootObj.Add(r);
0 голосов
/ 26 марта 2019

Поскольку вы используете List, на самом деле вы можете использовать методы, унаследованные от класса IEnumerable, поскольку List является реализацией IEnumerable.

Вы можете сделать это:

List<RootObject> rootObj = new List<RootObject>();
//delete this---- rootObj[0].code = "success_04";
//delete this---- rootObj[0].msg = "Access granted";
//use this
rootObj.Add(new RootObject{
code = "success_04",
msg = "Access Granted"
})
JsonRes.Message = rootObj;
0 голосов
/ 26 марта 2019

Доступ к вашему экземпляру AuthJsonResponses напрямую. Во-первых, обновите этот класс, чтобы Message имел личный установщик, и создайте его как List<RootObject>

.
public class AuthJsonResponses
{
    public int Code { get; set; }
    public string Jwt { get; set; }
    public List<RootObject> Messages { get; private set; } = new List<RootObject>();
}

public class RootObject
{
    public string msg { get; set; }
    public string code { get; set; }
}

В своем коде непосредственно добавьте объект к свойству Message. Я предлагаю переименовать его в Messages, чтобы указать, что это коллекция

jsonRes.Messages.Add(new RootObject{msg ="Access granted", code="success_04"});
0 голосов
/ 26 марта 2019

Вы обрабатываете список как массив, который не будет работать, вам нужно использовать метод Add, например

rootObj.Add(new RootObj{
    code = "success_04",
    msg = "Access granted"
});

Вы также можете использовать метод AddRange для добавления нескольких объектов, например

rootObj.AddRange(new List<RootObj>{new RootObj{
    code = "success_04",
    msg = "Access granted"
}, new RootObj{
    code = "success_05",
    msg = "Access denied"
}});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...