2009-10-30 15 views
6
के प्रकार

किसी को भी एक कस्टम HtmlHelperextension विधि है जो की तरह बर्ताव बनाने के लिए वाक्यविन्यास पता है ..Html.BeginForm() विस्तार

<% using (Html.BeginForm()) {%> 

<p>Loads of html stuff here </p> 

<% } %> 

मैं की ....

पंक्तियों के साथ कुछ सोच रहा हूँ

कोई विचार?

चीयर्स,

ETFairfax

उत्तर

8

आप IDisposable इंटरफ़ेस लागू करने और फिर से लागू करने वाली कक्षा बनाने की आवश्यकता है अपने HtmlHelper से।

public static class HtmlHelperTableExtensions { 
    private class TableRenderer : IDisposable { 
     HtmlHelper html; 
     public TableRenderer(HtmlHelper html) { 
      this.html = html; 
     } 
     public void Dispose() { 
      HtmlHelperTableExtensions.EndTable(html); 
     } 
    } 
    public static IDisposable BeginTable(this HtmlHelper html) { 
     // print begin table here... 
     return new TableRenderer(html); 
    } 
    public static void EndTable(this HtmlHelper html) { 
     // print end table here... 
    } 
} 
+0

अच्छा एक। धन्यवाद Mehrdad – ETFairfax

+3

बस इसे पढ़ने वालों के लिए स्पष्टीकरण देने के लिए, आपको HttpContext.Current.Response.Write ("") पर कॉल करने की आवश्यकता है; उन जगहों पर जहां मेहरधदास ने लिखा है // यहां प्रिंट शुरू करें, और // प्रिंट अंत तालिका यहां दी गई है। – ETFairfax

1

आप इस प्रकार का विधि कुछ है पूरे करने होंगे:

public static IDisposable BeginTable(this HtmlHelper html, ...) 
{ 
    // write the start of the table here 

    return new EndTableWriter(); 
} 

कहाँ EndTableWriter कुछ इस तरह है:

private class EndTableWriter : IDisposable 
{ 
    public void Dispose() 
    { 
     // write the end of the table here 
    } 
} 
संबंधित मुद्दे