asp mvc控制器创建

时间:2011-01-02 10:49:22

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

我想动态创建ascx文件,以部分渲染它们。 但据我所知,ot显示它们,我至少需要虚拟方法:

public ActionResult test()
    {
        return PartialView();
    }

如何为每个新的ascx文件创建此方法?

upd:我需要工厂吗?

2 个答案:

答案 0 :(得分:0)

为什么要创建动态ascx文件?

如果要在控制器中创建所有布局,您应该能够直接返回它。

但是,那你为什么要那样做? 这样,单元测试,重构和重用将非常困难。

答案 1 :(得分:0)

您需要提前创建.ascx控件。如果您这样做,我建议您注册一个新的视图引擎,以提供新的PartialView位置。

public class MyViewEngine : WebFormsViewEngine
{
  public MyViewEngine()
  {
    PartialViewLocationFormats = new[]
    {
      "~/Views/{1}/{0}.ascx",
      "~/Views/GeneratedControls/{0}.ascx",
      "~/Views/Shared/{0}.ascx"
    };
  }
}

这允许您将动态视图写入/Views/GeneratedControls/文件夹。如果您需要使用专门命名的控件(即您生成的控件具有随机名称),则只需将调用调整为PartialView

public ActionResult test()
{
  return PartialView("name-of-control");
}

否则MVC将使用Action的名称作为要使用的控件的名称。