如何从控制器中调用班级列表?
这是我的模特:
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;
但是似乎我不知道范围存在问题。 我的代码有什么问题?
谢谢。
答案 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);