2009-07-06 21 views
17

यह एक सच में मूक सवाल हो सकता है, लेकिन मैं नेट सीख रहा हूँ, इसलिए मैं काफी पता कर रहा हूँ ...सबसे अच्छा तरीका करने के लिए

मान लें कि मेरे पास दो फाइलें डिफ़ॉल्ट हैं .aspx और संबंधित default.aspx.cs।

default.aspx.cs: बिना

<%= myObject.SomePropertyOfThisObject%> 

... या कुछ इसी तरह,:

protected void Page_Load(object sender, EventArgs e) 
{ 
    var myObject = new MyObject(); 
} 

वहाँ एक रास्ता default.aspx में मैं की तरह कुछ कर सकता है कि है डाटाबेसर्स या इस तरह जटिल कुछ का उपयोग करें? और यदि डेटा को बाध्य करने के आसपास कोई रास्ता नहीं है, तो ऐसा करने का सबसे अच्छा तरीका क्या होगा?

+0

मुझे समझ में नहीं आता कि आप क्या करने की कोशिश कर रहे हैं ... – sebagomez

+0

मेरे .cs में किसी ऑब्जेक्ट को परिभाषित करना और मेरे .aspx – marcgg

+0

में इसका उपयोग करना वेबफॉर्म के लिए पिछड़ा है। अपने एपीएसएक्स कोड में उस तरह के तर्क डालने की आदत से बाहर निकलें। इसके बजाए एक लेबल या शाब्दिक नियंत्रण जोड़ें। –

उत्तर

30

आप कर सकते हैं, लेकिन आप इसे थोड़ा अलग करना होगा। ,

protected MyObject _myObject; 

फिर Page_Load में: अपने default.aspx.cs में, एक सदस्य को शामिल

protected void Page_Load(object sender, EventArgs e) 
{ 
     _myObject = new MyObject(); 
} 

फिर, default.aspx में, आप कर सकते हैं:

<%= _myObject.SomePropertyOfThisObject %> 
के

बेशक, यह मानता है कि कक्षा MyObject की संपत्ति बहुत बढ़िया है। आपके पास सिस्टम का मतलब नहीं था। ऑब्जेक्ट क्लास, क्या आपने किया, क्योंकि इसमें बहुत बढ़िया नाम नहीं है।


के बाद से अपने प्रश्न सबसे अच्छा तरीके के बारे में पूछ रहा था, मैं आगे जाना होगा। जिस तरह से मैंने दिखाया वह सबसे अच्छा नहीं है। डेटा बाध्यकारी अभिव्यक्ति का उपयोग करने के लिए सबसे अधिक बार होता है। आप उन पसंद नहीं है, तो आप codebehind में चीजों को सेट कर सकते हैं:

protected void Page_Load(object sender, EventArgs e) 
{ 
     _myObject = new MyObject(); 
     // 
     _myLabel.Text = _myObject.SomePropertyOfThisObject; 
} 

मान लिया जाये:

<asp:Label runat="server" id="_myLabel" /> 
0

क्या उस दायरे में पहुंचने के लिए सार्वजनिक होना आवश्यक नहीं है?

..

public var myObject = null; 
protected void Page_Load(object sender, EventArgs e) 
{ 
    myObject = new Object(); 
} 
+2

संरक्षित पर्याप्त है (पेज_लोड के समान ही आवश्यकताएं हैं) –

5

<% = ...%>Response.Write(....) के लिए ASPX कम हाथ है।

आप myObject बदलते हैं तो जोरदार प्रकार (बजाय सिर्फ वस्तु के रूप में प्रकार के) होने के लिए आप कुछ प्रयोग लाइन कर सकते हैं:

<%= myObject.Awesome %> 

एक मूल्य फेंकना।

सावधान रहें, हालांकि, <% = वाक्य रचना सीमाएँ हैं कि - विशेष रूप से:

  • यह एक मूल्य के रूप में एचटीएमएल विशेषता के भीतर नहीं किया जा सकता
  • यह सर्वर साइड तत्वों का उत्सर्जन नहीं कर सकते
  • यह
  • एएसपी अपडेटपैनल्स के भीतर उपयोग नहीं किया जा सकता है - जब आप आंशिक पोस्टबैक करते हैं तो आपको अपवाद मिलेगा

आप शायद लेबल पर लेबल नियंत्रण बनाने से बेहतर हैं। आयु, और प्रोग्रामेटिक रूप से Text संपत्ति को मूल्य पर सेट करना। इससे आपको अधिक नियंत्रण मिल जाता है कि मूल्य-टू-स्ट्रिंग रूपांतरण कैसे किए जाते हैं। और अद्यतन पैनल नियंत्रण के साथ सही ढंग से काम करेगा।

1

आप कोडबींड का उपयोग करने के बजाय सीधे एएसपीएक्स फ़ाइल में ऐसा करना चाहते हैं जो आप कोडिंग कर सकते हैं। तो, मुझे लगता है कि आप जो करना चाहते हैं उसे पूरा करने के लिए, आप ...

<some html> 

<% var MyObject = new MyObject(); 
    Response.Write(myObj.Awesome()); %> 

<some html> 

हालांकि, यह वास्तव में अनुशंसित नहीं है। कोडबेहिंद चीजों को करने का सुझाव दिया गया "सर्वोत्तम अभ्यास" तरीका है, क्योंकि यह आपके कोड को आपके मार्कअप से अलग करता है, जो कि किसी भी अच्छे वास्तुकला में मौलिक है। मैं डाटाबेस से बचने के लिए जॉन सॉंडर्स द्वारा पोस्ट की गई कुछ चीज़ों का उपयोग करने की सलाह दूंगा, लेकिन आपको वास्तव में अपने एचटीएमएल पर ऑब्जेक्ट गुणों को आउटपुट करने के बजाए जीवन चक्र की घटनाओं का उपयोग करके कोडबाइंड में अपने नियंत्रण में हेरफेर करना चाहिए। उदाहरण के लिए, यदि आप उत्पादन के लिए कुछ पाठ कोशिश कर रहे थे, तो

var literal = new LiteralControl(myObject.Awesome()); 
myPanel.Controls.Add(literal); 
1

पीछे कोड (.cs) में संरक्षित और फिर aspx पृष्ठ पर कि फोन सभी डेटा पुनः प्राप्त करने के रूप में आप चर घोषणा कर सकते हैं की तरह कुछ है।

उदा।

protected IEnumerable<Class> _mydata; 

internal void MyDefaultData() 
{ 
mydata = doallthework; 
} 

aspx पृष्ठ पर आप निम्नलिखित

<%=_mydata.FirstOrDefault().FirstName%>

यकीन है कि विधि लोड पर कहा जाता है बनाने की तरह कर सकते हैं।

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