Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/420.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从JavaScript访问列表类的扩展属性_Javascript_C#_Angularjs_Asp.net Mvc_Inheritance - Fatal编程技术网

从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);
        }