代码之家  ›  专栏  ›  技术社区  ›  rjzii

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

  •  4
  • rjzii  · 技术社区  · 14 年前

    我们正在将ASP.NET MVC 1.0应用程序升级到2.0版本,其中一些代码要求使用需要htmlhelper呈现的LinkXTensions。虽然我们知道有些代码没有正确地遵循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 回复  |  直到 14 年前
        1
  •  5
  •   Darin Dimitrov    14 年前

    有一个 additional argument which takes a TextWriter :

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

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

        2
  •  2
  •   Mattias Jakobsson    14 年前

    问题是(正如错误消息所暗示的那样),不再有采用4个参数的ViewContext的构造函数。他们增加了五分之一的文字撰稿人。您可以这样创建一个视图上下文:

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