我有一个继承自List的类,并为此基类添加了一些属性,如下所示:
public class MyNewList: List<string>
{
public string MyNewProperty { get; set; }
}
我有一个MVC控制器,它返回这种类:
public JsonResult GetModel()
{
var model = new MyNewList() { "1", "2", "3" };
model.MyNewProperty = "I want to be shown!!!";
return Json(model);
}
我的问题是每当我对服务器进行ajax调用并接收这种类时,我都无法访问MyNewProperty。它始终为MyNewProperty返回undefined,但JavaScript将对象视为列表:
$http(...
function success(result) {
console.log(result) // ["1", "2", "3"]
console.log(result.myNewProperty); // undefined
}
我知道我们不应该继承List类,但这是项目中现有的类和逻辑,我无法改变它。我必须找到一种方法将此对象发送到JavaScript。
有人可以帮我吗?
答案 0 :(得分:0)
我建议如果您按照以下方式更改模型,我们可以获得所需的结果:
public class MyNewList
{
public List<string> data { get; set; }
public string myNewProperty { get; set; }
}
控制器方法就像那样
public JsonResult GetModel()
{
var model = new MyNewList();
model.data=new List<string>(){ "1", "2", "3" };
model.myNewProperty = "I want to be shown!!!";
return Json(model);
}
JavaScript Ajax调用将是那样的
$http(...
function success(result) {
console.log(result.data) // ["1", "2", "3"]
console.log(result.myNewProperty); // "I want to be shown!!!"
}
如果我们在不改变模型结构的情况下对Controller方法进行一些更改,则交替进行。你可以试试这个:
public JsonResult GetModel()
{
var model = new MyNewList(){ "1", "2", "3" };
model.MyNewProperty = "I want to be shown!!!";
var result=new {Data=model,newProperty=model.MyNewProperty};
return Json(result);
}
希望它会有所帮助。