दृष्टिकोण आप देख रहे हैं कि एक वस्तु के मूल्यों बांधता डेटा बाइंडिंग तंत्र के कुछ प्रकार है (आप से लोड कर सकता है डीबी अगर यह पहले से मौजूद है) आपके एएसपीनेट वेबफॉर्म पर।
- आप
बचाने एक खाली
- उपयोगकर्ता प्रपत्र और प्रेस भर जाएगा अपने ऑब्जेक्ट के गुणों के लिए क्षेत्रों के साथ वेबफ़ॉर्म (यानी बक्सें) प्रदर्शित:
मूल रूप से आप निम्नलिखित होगा
- फिर पोस्टबैक होगा। पेज लोड पर आप यह पता लगा सकते हैं कि यह
Page.IsPostback
के साथ एक पोस्टबैक है और यदि ऐसा है, तो आप एक नई ऑब्जेक्ट बनाते हैं और उपयोगकर्ता द्वारा दर्ज किए गए मानों के साथ इसे भरते हैं।
- अपने बटन करें OnClick में, आप डीबी
इस तरह (मैं एक संकलक के बिना मेरे सिर से बाहर यह लिख रहा हूँ विचार करेंगे, तो लेने के देखभाल करने के लिए इसे नीचे के भंडारण के लिए उपयुक्त बीएल विधि कॉल :))
public partial class MyPage : Page
{
private Person myPersonObj;
protected void Page_Load(...)
{
if(!Page.IsPostback)
{
//this is not a postback, so you may load an object based on an ID (i.e. in QueryString or create a new one
myPersonObj = new Person();
}
else
{
//it is a postback, so unbind the values
myPersonObj = new Person();
Unbind(); //the myPersonObj will be filled, the values are managed by ASP.net in the ViewState
}
}
//caution, overriding Page.DataBind()
private override void DataBind()
{
textBoxFirstname.Text = myPersonObj.FirstName;
...
}
private void Unbind()
{
myPersonObj.FirstName = textBoxFirstname.Text;
}
protected void btnSubmit_OnClick(...)
{
if(Page.IsValid)
{
Save();
}
}
private void Save()
{
//ideal layering with Interfaces
IPersonBL personBL = MyBLFactory.Get<IPersonBL>();
personBL.SavePerson(myPersonObj); //call the BL for further validation and then persisting
}
}
क्या मैं कल जोड़ना चाहते थे, लेकिन भूल गया के बाद से मैं जल्दी करने के लिए किया था:
आप के साथ ही दूसरों वर्णित ViewState या सत्र में अपनी वस्तुओं स्टोर कर सकते हैं, लेकिन मुझे लगता है कि यह होना चाहिए अनुभव किया है निम्नलिखित "नुकसान" (मेरे दृष्टिकोण से) के कारण जितना संभव हो उतना दुर्लभ किया जाना चाहिए:
- आपका वस्तुओं serializable
- ViewState में भंडारण drammatically अपने पृष्ठ का आकार में वृद्धि होगी और इस प्रकार अपने पृष्ठ की लोडिंग धीमा होने की जरूरत है। ध्यान दें कि व्यूस्टेट को क्लाइंट में स्थानांतरित किया जाता है और हर बार "पोस्टबैक" होता है। यदि यह केवल संभावना है और आप प्रदर्शन की समस्याओं का सामना कर रहे आप trying this विचार कर सकते हैं (लेकिन यह अपवाद होना चाहिए !!)
- अपने सत्र में भंडारण वस्तुओं, सर्वर साइड पर लोड डाल सकता है स्मृति लेने वाली वहाँ। आपको अपने सत्र में वस्तुओं को संग्रहीत करने में सावधान रहना चाहिए और संभवतः उन वस्तुओं के विनाश की भी देखभाल करना चाहिए यदि आपको पता है कि आपको अब उनकी आवश्यकता नहीं है।
मैंने वर्णित "डेटाबेस" दृष्टिकोण का लाभ यह है कि आपको हर बार एक नई ताजा वस्तु रखने के "नुकसान" के साथ इन समस्याओं का सामना नहीं करना पड़ता है। इसलिए आपको अपनी ऑब्जेक्ट स्टेटस को संभालने का ख्याल रखना है, यानी मैन्युअल रूप से राउंडट्रिप्स इत्यादि के माध्यम से आईडी को रखना ..