从JavaScript访问列表类的扩展属性
我有一个从列表继承的类,它向这个基类添加了更多属性,如下所示:从JavaScript访问列表类的扩展属性,javascript,c#,angularjs,asp.net-mvc,inheritance,Javascript,C#,Angularjs,Asp.net Mvc,Inheritance,我有一个从列表继承的类,它向这个基类添加了更多属性,如下所示: public class MyNewList: List<string> { public string MyNewProperty { get; set; } } 我的问题是,每当我对服务器进行ajax调用并接收此类类时,我都无法访问MyNewProperty。它总是为MyNewProperty返回undefined,但JavaScript将对象视为列表: $http(... function suc
public class MyNewList: List<string>
{
public string MyNewProperty { get; set; }
}
我的问题是,每当我对服务器进行ajax调用并接收此类类时,我都无法访问MyNewProperty。它总是为MyNewProperty返回undefined,但JavaScript将对象视为列表:
$http(...
function success(result) {
console.log(result) // ["1", "2", "3"]
console.log(result.myNewProperty); // undefined
}
我知道有人建议我们不应从List类继承,但这是项目中现有的类和逻辑,我无法更改它。我必须找到一种方法将这个对象发送到JavaScript
有人能帮我吗?我建议,如果您按照下面给出的方式更改您的模型,我们可以得到所需的结果:
public class MyNewList
{
public List<string> data { get; set; }
public string myNewProperty { get; set; }
}
或者,如果我们在不改变模型结构的情况下对控制器方法进行一些更改。您可以尝试以下方法:
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);
}
希望能有所帮助。我建议,如果您按照以下所示更改您的型号,我们可以得到所需的结果:
public class MyNewList
{
public List<string> data { get; set; }
public string myNewProperty { get; set; }
}
或者,如果我们在不改变模型结构的情况下对控制器方法进行一些更改。您可以尝试以下方法:
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);
}
希望能有所帮助。谢谢你的回答。但是,正如我在问题末尾提到的,我不能为了遗留目的更改类的结构。我别无选择,只能从列表类继承。您可以更改控制器方法吗?如果在控制器方法中做了一些更改,这可以实现,这可以完成工作。谢谢但是,仍然在寻找/等待更好的答案,因为在这种情况下,如果我碰巧忘记给一个属性赋值,我必须键入并填充每个属性,这会导致重复/不一致。否则,我想就是这样了。也许如果我能给MyNewList类添加一个特殊属性,我的问题会更容易解决……谢谢你的回答。但是,正如我在问题末尾提到的,我不能为了遗留目的更改类的结构。我别无选择,只能从列表类继承。您可以更改控制器方法吗?如果在控制器方法中做了一些更改,这可以实现,这可以完成工作。谢谢但是,仍然在寻找/等待更好的答案,因为在这种情况下,如果我碰巧忘记给一个属性赋值,我必须键入并填充每个属性,这会导致重复/不一致。否则,我认为这就是方法。也许如果我能给MyNewList类添加一个特殊属性,我的问题会更容易解决。。。
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);
}