【问题标题】:What is the recommended way to preserve custom code in scaffold generated Controller and View Code?在脚手架生成的控制器和视图代码中保留自定义代码的推荐方法是什么?
【发布时间】:2012-10-01 21:13:32
【问题描述】:

我正在使用带有 EF5 的 MVC3。我喜欢获取脚手架生成的控制器和视图的方式。这产生了一个很好的工作流程,可以快速、一致地创建应用程序。当然,Scaffolding 背后的最初想法是创建 80% 的快速启动,显然控制器和视图可以快速定制。但是,是否有任何推荐的做法来保留自定义代码,同时仍然能够重新运行脚手架。我能想到的最接近的是从控制器操作等中调用外部方法。我想我需要将这些合并到 T4 模板中???也许依赖注入在这里起作用?我已经看到它在域层中用于额外的服务方法。

也许我希望太多了!!!

非常感谢您的任何想法。

【问题讨论】:

    标签: asp.net-mvc-3 t4


    【解决方案1】:

    为控制器使用自动生成的代码,只需确保生成的代码创建 partial classes

    至于视图,更改视图并重新生成视图而不丢失更改后所需的内容要困难得多(有时是不可能的)。

    更新

    您可以让代码生成器创建如下文件:

    Controllers/ClientController.Auto.cs(自动添加表示自动生成)

    //------------------------------------------------------------------------------
    // <auto-generated>
    // This code was generated from a template.
    //
    // Manual changes to this file may cause unexpected behavior in your application.
    // Manual changes to this file will be overwritten if the code is regenerated.
    // </auto-generated>
    //------------------------------------------------------------------------------
    
    using System;
    
    namespace SomeCompany.SomeProjectName.Controllers
    {
      public partial class ClientController
      {
        public SomeAutoGeneratedMethod()
        {
        }
    
        public SomeAutoGeneratedProperty { get; set; }
      }
    }
    

    Controllers/ClientController.cs

    using System;
    
    namespace SomeCompany.SomeProjectName.Controllers
    {
      public partial class ClientController
      {
        public SomeProgrammerWrittenMethod()
        {
        }
    
        public SomeProgrammerWrittenProperty { get; set; }
      }
    }
    

    【讨论】:

    • 埃里克,感谢您的快速回复。请您详细说明您的控制器解决方案。非常感谢。
    • 原谅我的无知,但我认为这意味着我要编写 T4 模板来执行上述操作?对不起,这一切都是新的。再次感谢。
    • 选择什么来生成控制器并不重要,只是了解部分类如何满足您的需求。然后你应该能够使用任何代码生成工具来生成部分类。
    • 感谢您的帮助。非常感谢。埃德
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多