簡體   English   中英

從JavaScript訪問List類的擴展屬性

[英]Accessing extended properties of a List class from JavaScript

我有一個繼承自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。

任何人都可以幫我這個嗎?

我建議如果您按照以下方式更改模型,我們可以獲得所需的結果:

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

希望它會有所幫助。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM