当我在下面的MVC 4 Web项目中编写此代码时
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);
}
}
我可以这样使用,
@using(Html.BeginTable("abc"))
{
@:<th>content etc</th>
}
但我不想使用Html
示例,我想像这个项目一样使用
@using(HtmlExtensions.BeginTable("abc"))
{
@:<th>content etc</th>
}
我该如何解决这个问题? 感谢
答案 0 :(得分:0)
您必须添加HtmlHelper作为参数,因此您必须以某种方式获取对HtmlHelper的引用。例如,如果您在视图中:
@{
var helper = Html
HtmlExtensions.BeginTable(helper,"abc")
}
您可以通过调用new HtmlHelper(...)
来创建新实例,但是您必须提供所有参数,例如ViewContext等等