For the last 2 months, I have been using T4MVC for my MVC2 projects - and it is awesome! Previously, to provide strongly typed view name/path, I have to create a helper class that list all of my view names and location, so when I refer to them I can just type:
<% Html.RenderPartial(ViewLocations.MyCustomview);%>This is handy, but every time I create new view or rename it, I have to be diligent in renaming it in my helper class. With T4MVC, all this are done automatically!
You can get T4MVC template via MVC Contrib project in Codeplex. How to use it - after the jump.
- Download T4MVC (consisting of 2 files: T4MVC.tt and T4MVC.settings.t4)
- Put the files at the root of your ASP.NET MVC project
- That's it basically. If you need to regenerate code, right click on the T4MVC.tt file and click "Run Custom Code"
<% Html.RenderPartial("~/Views/MyController/MyCustomView.ascx");%>I can now write:
<% Html.RenderPartial(MVC.MyController.Views.MyCustomView);%>It even works if you have deeper folder structure, so instead of:
<% Html.RenderPartial("~/Views/MyController/Controls/MyCustomView.ascx);%>Now I can do this:
<% Html.RenderPartial(MVC.MyController.Views.Controls.MyCustomView);%>Also wonderfully works with Area:
<% Html.RenderPartial(MVC.MyArea.MyController.Views.Controls.MyCustomView);%>This obviously also works from inside the controller,so instead of:
return View("~/Area/MyArea/Views/Controls/MyCustomView.ascx");Now:
return View(MVC.MyArea.MyController.Views.Controls.MyCustomView);
<% =Html.ActionLink("Click here", "MyAction", "MyController")%> <% =Html.ActionLink("Next Page", "GoToPage", "MyController", new { id = 1, page = 2, active = true })%>Now with T4MVC magic, they become:
<% =Html.ActionLink("Click here", MVC.MyController.MyAction())%> <% =Html.ActionLink("Next Page", MVC.MyController.GoToPage(1, 2, active))%>Or if you have to add additional parameters that are not in the signature of the action:
<% =Html.ActionLink("Click here", MVC.MyController.MyAction().AddRoutevalue("param1", "John"))%> <% =Html.ActionLink("Next Page", MVC.MyController.GoToPage(1, 2, active).AddRouteValues(new { sortField = "Name", sortDirection = "asc" }))%>
<% using (Html.BeginForm(MVC.MyController.Edit(Model.Id), FormMethod.Post)) { ... } %>There are much more usage of T4MVC that will make your MVC coding much more easier. What I have shown you are just the stuff I used the most. I recommend you to check out the docs in Codeplex for more examples.