2009-10-30 105 views
6

有谁知道建立一个功能类似一个自定义的HtmlHelperextension方法的语法..Html.BeginForm()类型的扩展

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

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

<% } %> 

我沿着....

行思考的东西

任何想法?

干杯,

ETFairfax

回答

8

你需要创建一个实现IDisposable接口和ret的类从你的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 2009-10-30 16:03:37

+3

只是为了澄清这些阅读此,你需要调用HttpContext.Current.Response.Write(“”);在Mehrdadhas写的地方//在这里打印开始表,//在这里打印结束表。 – ETFairfax 2009-10-30 16:05:11

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 
    } 
}