ASP.NET MVC Controller template-ek testreszabása

Ha egy ASP.NET MVC projektben új controllert generálok, annak valami ehhez hasonló lesz az eredménye:

public class DemoController : Controller
{
  // 
  // GET: /Demo/

  public ActionResult Index()
  {
    return View();
  }
}

Biztos nem én vagyok az egyetlen (vagy igen?), akinek több dolog is bántja a szemét a kommenttel kapcsolatban:

  • A teljesen felesleges // komment sor.
  • A semmitmondó komment.
  • A komment utáni üres sor.

Egyébként rendben is van Mosolygó arc

Szerencsére az MVC csapat már dolgozik azon, hogy a következő verzióban a generált kód “normálisabb” legyen. Nem lesz felesleges komment sor és üres sor sem, sőt talán a generált komment is tartalmasabb lesz. ASPInsiderként javasoltam, hogy legyen XML komment, de az volt a válasz, hogy mivel controller metódusról van szó, azt vagy az MVC runtime hívja meg, vagy egy unit test és egyik helyen sem segítene az IntelliSense, ezért nem lesz XML komment. Végülis ebben van logika, egyébként meg az a fő cél, hogy kevesebb legyen a kód.

Szerencsére nem kell megvárnunk a következő MVC verziót, hogy javítsunk a generátoron, megtehetjük magunk. A generáláshoz használt T4 sablon itt található: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ItemTemplates\CSharp\Web\MVC 3\CodeTemplates\AddController\Controller.tt

Ha ezt a fájlt átírjuk, akkor a gépünkön lévő összes MVC projekt az átírt változatot fogja használni.

Ha csak egy projektben szeretnénk más sablont használni, akkor a következő a teendő:

  1. A projektben létre kell hozni egy CodeTemplates és azon belül egy AddController mappát.
  2. Ide be kell másolni az előbb említett mappában található Controller.tt fájlt.
  3. A Solution Explorer ablakban be kell rá állítani, hogy Build Action = None.
  4. Át lehet írni a Controller.tt fájlt, ahogy jólesik.

Így végül csak lett XML kommentem és még source controlba is bekerült a sablon Mosolygó arc

 

Technorati-címkék: ,,,
Advertisements

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s