从控制器调用列表类

时间:2019-03-26 04:35:40

标签: c# arrays list

如何从控制器中调用班级列表?

这是我的模特:

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 个答案:

答案 0 :(得分:0)

您正在像处理数组一样处理列表,这将不起作用,例如,您需要使用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"
}});

答案 1 :(得分:0)

实际上,在使用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;

答案 2 :(得分:0)

直接访问您的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"});

答案 3 :(得分:0)

您可以执行以下其中一项操作:

 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;

答案 4 :(得分:0)

您面临的问题是,您正在引用列表的第一个元素,之后初始化了列表!初始化本身只会创建List类的对象,它不会创建任何元素

因此,您必须自己创建RootObject类的对象,然后将其添加到列表中:

// create object
var r = new RootObject();
r.code = "success_04";
r.msg = "Access granted";
// add it to list
rootObj.Add(r);