I was wondering, is it possible to create your own helper definition, with a using? such as the following which creates a form:
using (Html.BeginForm(params))
{
}
I'd like to make my own helper like that. So a simple example I'd like to do
using(Tablehelper.Begintable(id)
{
<th>content etc<th>
}
which will output in my view
<table>
<th>content etc<th>
</table>
Is this possible? if so, how?
Thanks
Sure, it's possible:
public static class HtmlExtensions
{
private class Table : IDisposable
{
private readonly TextWriter _writer;
public Table(TextWriter writer)
{
_writer = writer;
}
public void Dispose()
{
_writer.Write("</table>");
}
}
public static IDisposable BeginTable(this HtmlHelper html, string id)
{
var writer = html.ViewContext.Writer;
writer.Write(string.Format("<table id=\"{0}\">", id));
return new Table(writer);
}
}
and then:
@using(Html.BeginTable("abc"))
{
@:<th>content etc<th>
}
will yield:
<table id="abc">
<th>content etc<th>
</table>
I'd also recommend you reading about Templated Razor Delegates.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With