Custom html helpers: Create helper with “using” statement support

后端 未结 3 1637
长情又很酷
长情又很酷 2020-12-07 16:28

I\'m writing my first asp.net mvc application and I have a question about custom Html helpers:

For making a form, you can use:

<% using (Html.Begi         


        
3条回答
  •  陌清茗
    陌清茗 (楼主)
    2020-12-07 17:00

    Here is a possible reusable implementation in c# :

    class DisposableHelper : IDisposable
    {
        private Action end;
    
        // When the object is created, write "begin" function
        public DisposableHelper(Action begin, Action end)
        {
            this.end = end;
            begin();
        }
    
        // When the object is disposed (end of using block), write "end" function
        public void Dispose()
        {
            end();
        }
    }
    
    public static class DisposableExtensions
    {
        public static IDisposable DisposableTr(this HtmlHelper htmlHelper)
        {
            return new DisposableHelper(
                () => htmlHelper.BeginTr(),
                () => htmlHelper.EndTr()
            );
        }
    }
    

    In this case, BeginTr and EndTr directly write in the response stream. If you use extension methods that return a string, you'll have to output them using :

    htmlHelper.ViewContext.HttpContext.Response.Write(s)
    

提交回复
热议问题