开发者

asp mvc controller creation

i want dynamically create ascx files, to partial render them. but as i know, ot show them , i at 开发者_如何学Goleast need dummy method:

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

how can i create this method for each new ascx file?

upd: i need factory?


Why would you create dynamic ascx files?

If you want to create all the layout in the controller you should be able to return it directly.

But then, why would you do that? This way it will be really hard to do unit testing and refactoring and reuse.


You'd need to create your .ascx controls ahead of time. If you are doing this, I would recommend that you register a new view engine to provide a new PartialView location.

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

This allows you to write your dynamic views to the /Views/GeneratedControls/ folder. If you need to use a specifically named control (i.e. the control you generate has a random name) then you simply need to adjust your call to PartialView:

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

Otherwise MVC will use the name of the Action as the name of the control to use.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜