2013-07-19 4 views
9

के बीच अलग है मूल रूप से मैं उत्तेजना में से एक के कारण एक परीक्षण कर रहा हूं।@Model और @model

नियंत्रक में return View(list_a का प्रयोग करके) करके मैं मेरे विचार में एक सूची से पारित कर दिया है, मेरे दृश्य पृष्ठ पर, कोड की तरह है:

CS1579: foreach statement cannot operate on variables of type 'UniBlue.Models.KYC' because 'UniBlue.Models.KYC' does not contain a public definition for 'GetEnumerator' 

लेकिन:

@{ 
    ViewBag.Title = "KYC_Home"; 
} 
@using UniBlue.Models; 
@model UniBlue.Models.KYC 
... 
@foreach(KYC a in Model) 
... 

वहाँ एक अपवाद का कहना है हो जाएगा , जब मैंने अपना कोड पर बदल दिया @ मॉडल पृष्ठ अच्छा दिखता है लेकिन शीर्षक पर यह दिखाता है:

System.Collections.Generic.List`1[UniBlue.Models.KYC] UniBlue.Models.KYC 

नियमित HTML पाठ

क्या कोई मुझे बता सकता है कि ऐसा क्यों हुआ? अजीब शीर्षक रेखा को हटाने के लिए मुझे क्या करना चाहिए?

उत्तर

18

एक यह है कि मॉडल है मजबूत प्रकार की घोषणा करने के लिए किया जाता है के रूप में उल्लेख को दर्शाता है, और अन्य मॉडल में ही उपयोग करने के लिए प्रयोग किया जाता है।

निम्नलिखित कहते हैं कि मॉडल के लिए उपयोग किया जाने वाला मजबूत प्रकार UniBlue.Models.KYC है।

@model UniBlue.Models.KYC 

यह मूलतः 'चर' Model कि प्रकार के रूप में की घोषणा की। यह निम्नलिखित कर के लिए समान है:

UniBlue.Models.KYC Model; 

Model एक चर रहा है, @model एक कीवर्ड कह Model हो जाएगा कि किस प्रकार है।

आपकी त्रुटि इसलिए है क्योंकि आपने Model को केवाईसी के रूप में घोषित किया है, लेकिन केवाईसी गणना योग्य नहीं है। आप इसे foreach में IEnumerable<UniBlue.Models.KYC> की अपेक्षा कर रहे हैं जो कि मामला नहीं है।

अपने मॉडल सही मायने में एक सूची है, तो

@model IEnumerable<UniBlue.Models.KYC> 
+0

अच्छा बिंदु का उपयोग करें! लेकिन जब मैं लिखता हूं तो यह क्या कारण है: मॉडल UniBlue.Models.KYC, मॉडल को स्वयं को कोई मूल्य नहीं दिया गया है? – LifeScript

+0

मुझे आपका प्रश्न समझ में नहीं आया है। –

+0

लेकिन "मॉडल UniBlue.Models.KYC" लिखने के बजाय, मैंने 'मॉडल UniBlue.Models.KYC' का उपयोग किया और यह भी सफलतापूर्वक भाग गया और अच्छी तरह से प्रदर्शित हुआ, इसलिए मुझे अभी भी पता नहीं है कि इससे कोई अपवाद क्यों नहीं हुआ और प्राप्त नहीं हुआ सूची डेटा – LifeScript

6

@model एक चर के प्रकार आप @Model

@model string 

@Model.ToUpper(); // works as @Model is of type string 
संबंधित मुद्दे