6

मैं कुछ बुनियादी बातों पर अटक गया हूं जो मुझे विश्वास है, इसलिए मुझे इस कार्य को प्राप्त करने में मेरी सहायता करने के लिए कुछ विशेषज्ञता की आवश्यकता है।नॉकआउट जेएस डिक्शनरी प्रदर्शन एमवीसी

मेरे पास एक शब्दकोश है जो परिणामों की एक सूची संग्रहीत करने के लिए मूल्यों के रूप में एक पूर्णांक और स्ट्रिंग लेता है (जो मैं नीचे दिखाऊंगा)।

[ViewModel के लिए कोड]

public class ResultModel 
{ 
    public Dictionary<int, string> dictResult { get; set; } 
    public string dictResultJson { get; set; } 

    public ResultModel() 
    { 
     dictResult = new Dictionary<int, string>(); 
    } 
} 

[cshtml फ़ाइल के लिए कोड]

<h2>Results</h2> 
<table> 
    <tbody data-bind="template: { name: 'tblResult', foreach: dictResultJson() }"></tbody> 
</table> 

<script id="tblResult" type="text/html"> 
    <tr> 
     <td data-bind="value: key"></td> 
     <td data-bind="value: value"></td> 
    </tr> 
</script> 

<script type="text/javascript"> 
    var ResultModel = function(m) { 
     var self = this; 
     self.dictResultJson = ko.observableArray(mapDictionaryToArray(m.DictJson)); 
    }; 

    function mapDictionaryToArray(dictionary) { 
     var result = []; 
     for (var key in dictionary) { 
      if (dictionary.hasOwnProperty(key)) { 
       result.push({ key: key, value: dictionary[key] }); 
      } 
     } 

     return result; 
    } 

    var data = @(Html.Raw(Json.Encode(Model))); 
    var dataFromServer = ko.utils.parseJson(data.dictResultJson); 
    console.log(dataFromServer); 

    ko.applyBindings(new ResultModel(dataFromServer)); 
    console.log("apply binding"); 
</script> 

: मेरा मॉडल और नियंत्रक देखें इस कोड को, कि नॉकआउट के लिए JSON स्ट्रिंग के रूप डेटा पोस्ट है मेरी cshtml फ़ाइल में मैं लौटा ऑब्जेक्ट को एमवीसी कंट्रोलर से पार्स कर रहा हूं और इसे एक सरणी में परिवर्तित कर रहा हूं। अब समस्या यह है कि यह किसी भी डेटा को प्रदर्शित नहीं कर रहा है, लेकिन परिवर्तनीय डेटा FromServer में उचित डेटा है। यह इस डेटा है:

वस्तु {1: "केट", 3: "एलेक्स", 4: "जेन"}

अब, मैं कैसे पाश करने के क्रम में यह प्रदर्शित करने के लिए इस json परिणाम चाहिए एक मेज प्रारूप, जैसे

टेबल

1 केट

3 एलेक्स

4 जेन

अग्रिम धन्यवाद

Jesmond

+1

यह सर्वर साइड पर "mapDictionaryToArray" लागू करने के लिए बेहतर विचार है। संकलित कोड बहुत तेज़ काम करता है, है ना? – RredCat

उत्तर

2

क्या आप value

<tr> 
    <td data-bind="text: key"></td> 
    <td data-bind="text: value"></td> 
</tr> 

की text binding बजाय उपयोग करने की आवश्यकता पाठ के रूप में तालिका में मूल्यों को प्रदर्शित करना चाहते हैं और वहाँ के साथ एक अन्य समस्या यह है आपके कोड। जब आप new ResultModel(dataFromServer) पर कॉल करते हैं तो dataFromServer में पहले से ही सही प्रारूप में डेटा शामिल है। तो तुम ResultModel समारोह में m.DictJson की जरूरत नहीं है:

var ResultModel = function(m) { 
     var self = this; 
     self.dictResultJson = ko.observableArray(mapDictionaryToArray(m)); 
}; 
मेरे मन के लिए
+0

बहुत बहुत धन्यवाद, सही समझ में आता है! – user1889181

संबंधित मुद्दे