通用编辑器模板

本文关键字:编辑器 | 更新日期: 2023-09-27 18:12:33

是否有可能与System.Reflection创建通用视图?

所以我可以通过loop通过class properties形成inputs@Html.EditorFor@Html.Editor甚至是正常的<input />

有了这个,我可以创建一个template,并重复使用它来节省时间,并为用户创建一个令人愉快的图像。

那么这是可能的吗?

通用编辑器模板

是的,这是可能的,视图的模型应该是对象,控制器可以是通用控制器,但是你应该构建你自己的ControllerControllerFactory,如:

    public class MyGenericControllerFactory : DefaultControllerFactory
    {
        public override IController CreateController(RequestContext reqContext, string controllerName)
        {
            if(is controlleName generic) //you should define how build controller name when is generic
            //it should contain the controller name and the generic type name
            {
                string contRealName = "";//get the real controller name from controllerName var
                string genTypeName = ""; //get the generic type name fomr controllerName var
                Type contType = Type.GetType(contRealName);
                Type genType = Type.GetType(genTypeName);
                contType = contType.MakeGenericType(genType);
                return an instance of contType from your IoC container
            }
            else
            {
                Type contType = Type.GetType(controllerName);
                return an instance of contType from your IoC container
            }
        }
    }