在scaffold生成的Controller和View Code中保留自定义代码的推荐方法是什么?

时间:2012-10-01 21:13:33

标签: asp.net-mvc-3 t4

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

也许我希望得太多!!!

非常感谢任何想法。

1 个答案:

答案 0 :(得分:2)

使用自动生成的控制器代码,只需确保生成的代码创建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; }
  }
}

<强>控制器/ ClientController.cs

using System;

namespace SomeCompany.SomeProjectName.Controllers
{
  public partial class ClientController
  {
    public SomeProgrammerWrittenMethod()
    {
    }

    public SomeProgrammerWrittenProperty { get; set; }
  }
}