2008-10-22 21 views
19

चलें कहते हैं कि मैं प्रकार कार की एक वस्तु जो मैं HTML के रूप में प्रस्तुत करना चाहते हैं:क्या डेटा के बिना एक आइटम को बाध्य करने का कोई तरीका है। एक पुनरावर्तक नियंत्रण?

class Car { 
    public int Wheels { get; set; } 
    public string Model { get; set; } 
} 

मैं, क्योंकि यह बहुत वर्बोज़ लगता बाध्य करने के लिए ASP.NET पुनरावर्तक या ListView नियंत्रण का उपयोग करने के लिए नहीं करना चाहती। मेरे पास सिर्फ एक वस्तु है। लेकिन मैं अभी भी डाटाबेसिंग सिंटैक्स का उपयोग करने में सक्षम होना चाहता हूं इसलिए मुझे लेबल या लिटलल्स का उपयोग नहीं करना पड़ेगा। कुछ ऐसा:

<div> 
    Wheels: <%# (int)Eval("Wheels") %><br /> 
    Model: <%# (string)Eval("Model") %> 
</div> 

क्या किसी को वहां नियंत्रण के बारे में पता है जो बस इतना करता है?

और मैं अभी तक एएसपी.नेट एमवीसी में स्विच करने के लिए तैयार नहीं हूं।


दुर्भाग्य से, DetailsView नियंत्रण मेरी जरूरतों को पूरा नहीं करता है, क्योंकि यह टेम्पलेट शैली वाक्य रचना है कि मैं के बाद कर रहा हूँ समर्थन करने के लिए प्रतीत नहीं होता। इसे भी एक प्रकार के डेटासोर्स ऑब्जेक्ट से बाध्य होना चाहिए।

मुझे बेहतर मैक्सिम और टॉर्कल का समाधान पसंद आया। मैं इसके लिए जाने की कोशिश करूंगा।

उत्तर

26

अगर पेज एक विशिष्ट आइटम के बारे में है (उदाहरण के लिए, Car.aspx? CarID = abc123), मैं सामान्य रूप से पेज "CurrentCar"

public Car CurrentCar { get; set; } 

कहा जाता है पर एक सार्वजनिक संपत्ति है और मैं तो हो सकता है निम्नलिखित:

<div> 
    Wheels: <%= CurrentCar.Wheels %><br /> 
    Model: <%= CurrentCar.Model %> 
</div> 

इससे आपको सुरक्षा की आवश्यकता होती है। बस वास्तविक प्रतिपादन से पहले एक वैध वस्तु असाइन की गई सुनिश्चित करें।

+0

हालांकि आप CurrentCar अशक्त यहाँ इस मार्कअप प्रदर्शित करने से पहले होने के लिए जाँच करना चाहते हो सकता है। – rjarmstrong

+0

मैं 'सार्वजनिक' के बजाय संपत्ति 'संरक्षित' कर दूंगा, जब तक कि मेरे पास अन्य वर्गों (एएसपीएक्स पृष्ठ जैसे उप-वर्गों से अलग) के लिए इसका खुलासा करने का कोई कारण न हो। – JMD

5

मैं तुम्हें कार पृष्ठ पर एक संरक्षित संपत्ति बनाने का सुझाव देते हैं, यह आप aspx पेज में सीधे इसे उपयोग करने की अनुमति देगा:

<div> 
    Wheels: <%= Car.Wheels %> 
    Wheels: <%= Car.Models %> 
</div> 

यह दृष्टिकोण वास्तव में के रूप में एक आइटम डेटा बाइंडिंग परिदृश्यों के लिए बेहतर है " बाध्यकारी "दृढ़ता से टाइप किया गया है।

+0

व्हील और व्हील। : पी आपको वहां एक टाइपो मिला है। –

0

संरक्षित संपत्ति समाधान का एक दोष यह है कि आप इसे नियंत्रण के गुणों से बांधने के लिए उपयोग नहीं कर सकते हैं।

उदाहरण के लिए, निम्नलिखित कार्य नहीं करेगा:

<asp:Label ID="Label1" Text="Probably a truck" Visible='<%# CurrentCart.Wheels > 4 %>' runat="server" /> 
+0

और यह क्यों सुरक्षित है? इस मामले में जनता बेहतर है क्योंकि 99.99% समय, आप कहीं और पेज से प्राप्त नहीं होते हैं। बेशक, ढांचा है लेकिन ... यह है। –

+1

यही कारण है कि मैं इसे संरक्षित करना चाहता हूं ... :) – JacobE

+0

वास्तव में यह ऊपर <% # डेटा बाध्यकारी वाक्यविन्यास के साथ काम करता है ... मुझे एक और समस्या थी जिसने इसे पहले काम नहीं किया था। – JacobE

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