我们正在将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个参数的构造函数
答案 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);