रेज़र व्यू इंजन: एक अभिव्यक्ति ट्री में एक गतिशील ऑपरेशन नहीं हो सकता है


173

मेरे पास इसके समान एक मॉडल है:

public class SampleModel
{
     public Product Product { get; set; } 
}

और मेरे कंट्रोलर में मुझे एक अपवाद मिलता है जो प्रिंट आउट लेने की कोशिश करता है

@Html.TextBoxFor(p => p.Product.Name)

यह त्रुटि है:

Exception: An expression tree may not contain a dynamic operation

अगर कोई मुझे कैसे ठीक करने के लिए कुछ सुराग दे सकता है तो मैं वास्तव में इसकी सराहना करूंगा!


1
क्या यह MVC3 RC पर है? क्या आप हमें यह भी दिखा सकते हैं कि उत्पाद कैसा दिखता है? मैं इसे MVC3 RC
bmancini

जवाबों:


297

यह मुझे लगता है कि आपके पास एक अनकहा दृश्य है। डिफ़ॉल्ट रूप से, MVC3 RC में रेज़र के विचार टाइप किए जाते हैं dynamic। हालाँकि, लंबोदर गतिशील सदस्यों का समर्थन नहीं करते हैं। आपको अपने मॉडल को दृढ़ता से लिखना होगा। अपने दृश्य फ़ाइल के शीर्ष पर जोड़ें

@model SampleModel

11
यह एक अपरकेस मी था
जिसने

क्या होगा अगर आपके पास एक मॉडल है?
djack109

92

एक सामान्य त्रुटि जो इसका कारण है जब आप जोड़ते हैं

@Model SampleModel

के बजाय पृष्ठ के शीर्ष पर

@model SampleModel

5
इस उत्तर को जोड़ने के लिए धन्यवाद! कमाल है कि प्रोग्रामिंग के वर्षों के बाद आप केस संवेदनशीलता के बारे में कैसे भूल सकते हैं।
ब्रेंटलाइट

1
यदि आप "@ मॉडल" के बजाय "मॉडल" का उपयोग करते हैं तो भी हो सकता है ... जो रनटाइम के दौरान निर्माण करेगा लेकिन विफल हो जाएगा।
डेव रेमी

8

इस लिंक में @model के बारे में बताएं, एक अंश देखें:

@model(लोअरकेस "एम") रेजर विचारों में एक आरक्षित कीवर्ड है जो आपके विचार के शीर्ष पर मॉडल प्रकार की घोषणा करता है। आपने नामस्थान भी रखा है, जैसे:@model MyNamespace.Models.MyModel

बाद में फ़ाइल में, आप उस विशेषता को संदर्भित कर सकते हैं जिसे आप चाहते हैं @Model.Attribute(अपरकेस "एम")।


2
यह मेरी समस्या थी। यदि आप ध्यान से नहीं देख रहे हैं, तो विज़ुअल स्टूडियो राजधानी "एम" में जो आप टाइप कर रहा है उसे बदलने के लिए जाता है। यह वास्तव में परेशान है।
रॉबी

7

ऐसा लगता है कि आपका दृश्य टाइप किया गया है dynamic। दृश्य पर सही प्रकार सेट करें और आप देखेंगे कि त्रुटि दूर हो जाएगी।


5

उपयोग करने से पहले (दृढ़ता से HTML सहायक को देखें) इस पंक्ति को टाइप करें

@Html.TextBoxFor(p => p.Product.Name)

दृढ़ता से टाइप करने के लिए आपको अपने मॉडल को पेज में शामिल करना चाहिए।

@model SampleModel

1

यह त्रुटि मेरे साथ हुई क्योंकि मेरे पास @model के बजाय @@ मॉडल था ... मेरे मामले में कॉपी और पेस्ट त्रुटि। @Model में बदलाव ने इसे मेरे लिए ठीक कर दिया।


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.