2011-01-13 11 views
6

में डायनामिक ऑब्जेक्ट्स का संदर्भ नहीं दे सकता है मैं अपने पेज_इनिट ईवेंट के दौरान एक सूची सदस्य चर बना रहा हूं। मुझे * .aspx पृष्ठ में मेरे एम्बेडेड सी # कोड से सूची में ऑब्जेक्ट्स का संदर्भ देने में समस्या हो रही है। त्रुटि एक रनटाइम बाइंडर अपवाद है जो कहता है कि "ऑब्जेक्ट 'में' जॉबआईडी 'की परिभाषा नहीं है।एम्बेडेड एएसपीएक्स कोड

जब डीबगर का आह्वान किया जाता है, तो मैं देख सकता हूं कि फ़ोरैच लूप के वेरिएबल जे में वास्तव में जॉबआईड नामक एक गतिशील संपत्ति है और यह एक int मान से भरा हुआ है। तो, मेरा सवाल यह है कि मेरा एम्बेडेड सी # कोड डायनामिक ऑब्जेक्ट के साथ काम नहीं कर सकता है। क्या <% @ आयात%> कथन है जिसे मुझे गतिशील वस्तुओं के साथ काम करने की आवश्यकता है? मैंने <% @ आयात नामस्थान = "सिस्टम। गतिशील"%> जोड़ने की कोशिश की लेकिन इससे मदद नहीं मिली।

सहायता के लिए धन्यवाद। मार्क

पीछे कोड:

using System; 
    using System.Collections.Generic; 
    using System.Linq; 
    using Jobbarama.WebCode; 
    using DataModel; 


    public partial class contact : System.Web.UI.Page 
    { 
     public List<dynamic> JobList { get; set; } 

     protected void Page_Init(object sender, EventArgs e) 
     { 
      SessionManager mgr = SessionManager.Current; 

       using (myEntities context = new myEntities()) 
       { 
        var qry = from c in context.vjobList 
         where c.CampaignID == mgr.CampaignID 
         select new 
         { 
             c.JobID, c.JobTitle, c.CompanyName, c.InterestDate, c.InterestLevel 
         }; 

        JobList = qry.ToList<dynamic>(); 
       } 
      } 

     } 
    } 

ASPX कोड:

<select id='cboJob' name='cboJob' style='width: 150px;'> 
    <%foreach (var j in JobList){ %> 
     <option value="<%=j.JobID %>"><%=j.JobTitle%> [<%=j.CompanyName%>]</option> 
    <%} %> 
</select> 
+0

मुझे एम्बेडेड कोड के साथ एक ही कठिनाई हो रही है जहां मेरा कोड-बैक एक आईनेमेरेबल देता है। ऐसा लगता है कि कहीं मेरी गतिशीलता किसी ऑब्जेक्ट या किसी चीज़ में परिवर्तित हो रही है। @sisdog, भले ही आप <% foreach (जॉबलिस्ट में गतिशील जे) की तरह दिखने के लिए अपना पूर्वानुमान संशोधित करें> यह काम नहीं कर रहा है। – kd7iwp

+0

यह जवाब नहीं दे रहा है कि यह क्यों काम नहीं कर रहा है, आप DataBinder.Eval का उपयोग करने के लिए अपने कोड को फिर से लिख सकते हैं जो जॉब आईडी संपत्ति को पकड़ने के लिए प्रतिबिंब का उपयोग करने का सहारा लेगा। – Tony

उत्तर

1

मेरा अनुमान है इस वजह से एक अनाम वर्ग और में aspx देर संकलन सामान का उपयोग करने की अनुमति का मुद्दा हो सकता है विभिन्न असेंबली।

आप इस काम को बनाने के लिए impromptu-interface का उपयोग कर सकते हैं।

using ImpromptuInterface 

तो आप एक अंतरफलक बनाने (क्योंकि मैं अपने प्रकार पता नहीं है मैं गतिशील उपयोग कर रहा हूँ)

interface ISelectJob 
dynamic JobID 
dynamic JobTitle 
dynamic CompanyName 
dynamic InterestDate 
dynamic InterestLevel 
} 

आपका संपत्ति इंटरफ़ेस का उपयोग करना चाहिए

public List<ISelectJob> JobList { get; set; } 

और बनाने के लिए आपकी सूची में केवल .AllActLike<ISelectJob>()

JobList = qry.AllActLike<ISelectJob>().ToList(); 
जोड़ें

और यह काम करना चाहिए, क्योंकि यह एक हल्के डीएलआर प्रॉक्सी उत्पन्न करता है और अज्ञात वर्ग में संदर्भ को स्वयं सेट करता है, इसलिए ऐसा लगता है कि गतिशील कीवर्ड के साथ कॉल करने के विपरीत, इसका हमेशा उपयोग होता है।

+0

बहुत बढ़िया लेकिन मैं इसे काम नहीं कर सका। मुझे यह त्रुटि मिलती है: 'LINQ से संस्थाएं विधि' test.ISelectJob Actike [ISelectJob] (System.Object, System.Type []) 'विधि को पहचान नहीं पाती हैं, और इस विधि को स्टोर अभिव्यक्ति' में अनुवादित नहीं किया जा सकता है आपको कोई समझ है? – sisdog

+0

हां, मेरी गलती मुझे IQueryable नहीं लगता था, मैं उदाहरण को ठीक कर सकता हूं। – jbtule

+0

हो गया। मुझे लगता है कि यह भी बहुत स्पष्ट पढ़ता है। यद्यपि आपको जॉबलिस्ट के पास स्थैतिक प्रकार नहीं है, अगर कोई कारण था कि उसे 'सूची ' सूची की आवश्यकता है तो अंतिम पंक्ति 'जॉबलिस्ट = qry' हो सकती है।AllActLike ()। टोस्टिस्ट (); 'वही। – jbtule

1

ऑनकइलेटिंग कमांड को सेट करने, और प्रदर्शित करने के लिए दोहराने वाले या डेटालिस्ट का उपयोग करने के बारे में, LinqDataSource का उपयोग करने के बारे में क्या?

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