如何在ASP.NET MVC 2.0中的视图外创建HtmlHelper?

时间:2010-06-21 12:19:07

标签: asp.net-mvc-2 html-helper

我们正在将ASP.NET MVC 1.0应用程序升级到2.0版本,而某些代码需要使用需要HtmlHelper呈现的LinkExtensions。虽然我们知道某些代码没有正确地遵循MVC模型并且正在根据需要进行重新编码,但我们需要一些工作才能使应用程序构建。

以下是我们在ASP.NET MVC 1.0下运行的当前语法:

public static HtmlHelper GetHtmlHelper(ControllerContext context)
{
    return new HtmlHelper(new ViewContext(context,
                                          new WebFormView("HtmlHelperView"),
                                          new ViewDataDictionary(),
                                          new TempDataDictionary()),
                          new ViewPage());
}

我们得到的错误如下:

  

错误1'System.Web.Mvc.ViewContext'不包含带有4个参数的构造函数

2 个答案:

答案 0 :(得分:5)

有一个additional argument which takes a TextWriter

var viewContext = new ViewContext(
    context,
    new WebFormView("HtmlHelperView"),
    new ViewDataDictionary(),
    new TempDataDictionary(),
    context.HttpContext.Response.Output
);

这里的问题是为什么你需要自己实例化htmlHelper而不是使用视图中提供的那个?

答案 1 :(得分:2)

问题是(如错误消息所示),ViewContext的构造函数不再需要4个参数。他们增加了第五个文本作者。您可以通过以下方式创建viewcontext:

new ViewContext(context,
                                      new WebFormView("HtmlHelperView"),
                                      new ViewDataDictionary(),
                                      new TempDataDictionary()),
                      new ViewPage(), context.HttpContext.Response.Output);