2010-06-25 10 views
8

ठीक है तो मैं पता है कि कैसेHtmlHelper.BeginForm() का उपयोग कैसे करता है?

<% using (Html.BeginForm()) { %> 
    <input type="text" name="id"/> 
<% } %> 

उत्पादन

<form> 
    <input type="text" name="id"/> 
</form> 

अर्थात् यह कैसे अंत में </form> जोड़ता है करना चाहते हैं? मैंने कोडप्लेक्स में देखा और इसे HTMLhelper में नहीं मिला। एक एंडफॉर्म विधि है, लेकिन उपर्युक्त इसे कैसे कॉल करना जानता है?

कारण मैं एक HtmlHelper एक्सटेंशन बनाने के लिए चाहते हैं, लेकिन एक का उपयोग कर के अंत पर बंद करने के लिए पता नहीं कैसे है।

किसी भी मदद की सराहना की जाएगी :)

उत्तर

16

BeginForm रिटर्न एक IDisposable जो Dispose में EndForm कहता है।

जब आप using(Html.BeginForm()) { ... } लिखते हैं, संकलक कि Dispose कहता है, बदले में EndForm कॉल और <form> टैग बंद कर देता है जो एक finally ब्लॉक उत्पन्न करता है।

आप अपनी खुद की कक्षा कि IDisposable लागू करता है लिख कर इस आशय नकल कर सकते हैं।

+0

आश्चर्यजनक तेज़, उस बारे में सोचना चाहिए था! मैं इसे 8 मिनट के लिए उत्तर के रूप में चिह्नित नहीं कर सकता :) – Jose

+2

+1, लेकिन पैडेंट्री के हित में, 'एंडफॉर्म()' तकनीकी रूप से 'निपटान() '(जो' 'लिखता है), विपरीत नहीं है;) –

1

बहुत तरह SLaks ने कहा, यह एक अंत में है कि EndForm जो IDisposable इंटरफ़ेस है कि वस्तु .BeginForm() रिटर्न पर निपटान प्रणाली को बुलाती है कॉल ब्लॉक उत्पन्न करता है।

BeginForm Rseponse.Write का उपयोग करता है प्रतिक्रिया करने के लिए HTML को लिखने के लिए।

एंडफॉर्म प्रतिक्रिया के समापन टैग को लिखता है। इस प्रकार स्टार्टफॉर्म और डिस्पोज़ विधि से लौटे कन्स्ट्रक्टर के बीच होने वाली कुछ भी चीज़ टैग टैग के बीच प्रतिक्रिया के लिए लिखी जाएगी।

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