From 27924e019939a696172a00c686c2ea493e8545fb Mon Sep 17 00:00:00 2001 From: Matt Ward Date: Sun, 21 Aug 2011 14:43:08 +0100 Subject: [PATCH] Support generating ASP.NET MVC content pages from T4 templates. --- .../CodeTemplates/AddView/AspxCSharp/Empty.tt | 11 ++++++ .../CodeTemplates/AddView/CSHTML/Empty.tt | 8 ++++ .../AddView/AspxVisualBasic/Empty.tt | 11 ++++++ .../CodeTemplates/AddView/VBHTML/Empty.tt | 8 ++++ .../Project/Src/AddMvcViewToProjectView.xaml | 2 +- .../Src/AddMvcViewToProjectViewModel.cs | 12 +++++- .../Project/Src/IMvcTextTemplateHost.cs | 2 + .../Project/Src/IMvcViewFileGenerator.cs | 2 + .../Project/Src/MvcTextTemplateHost.cs | 7 ++++ .../Project/Src/MvcViewFileGenerator.cs | 6 +++ .../Test/Helpers/FakeMvcTextTemplateHost.cs | 2 + .../Test/Helpers/FakeMvcViewFileGenerator.cs | 2 + .../Src/AddMvcViewToProjectViewModelTests.cs | 38 +++++++++++++++++++ .../Test/Src/MvcTextTemplateHostTests.cs | 10 +++++ .../Test/Src/MvcViewFileGeneratorTests.cs | 34 +++++++++++++++++ 15 files changed, 153 insertions(+), 2 deletions(-) diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Empty.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Empty.tt index 6b838a049b..9676e1c93b 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Empty.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/AspxCSharp/Empty.tt @@ -5,6 +5,17 @@ <# if (mvcHost.IsPartialView) { #> <%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %> +<# } else if(mvcHost.IsContentPage) { #> +<%@ Page Language="C#" MasterPageFile="<#= mvcHost.MasterPageFile #>" Inherits="System.Web.Mvc.ViewPage<#= GetViewPageType() #>" %> + + +<#= mvcHost.ViewName #> + + + + + + <# } else { #> <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage<#= GetViewPageType() #>" %> diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Empty.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Empty.tt index 5250e643d8..16197df313 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Empty.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/CSharp/CodeTemplates/AddView/CSHTML/Empty.tt @@ -5,6 +5,14 @@ #> <# if (mvcHost.IsPartialView) { #> +<# } else if (mvcHost.IsContentPage) { #> +@{ + ViewBag.Title = "<#= mvcHost.ViewName #>"; + Layout = "<#= mvcHost.MasterPageFile #>"; +} + +

<#= mvcHost.ViewName #>

+ <# } else { #> <#= GetModelDirective() #> diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Empty.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Empty.tt index bcd4186109..af3dcc4ebd 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Empty.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/AspxVisualBasic/Empty.tt @@ -5,6 +5,17 @@ <# If mvcHost.IsPartialView Then #> <%@ Control Language="VB" Inherits="System.Web.Mvc.ViewUserControl" %> +<# ElseIf mvcHost.IsContentPage Then #> +<%@ Page Language="VB" MasterPageFile="<#= mvcHost.MasterPageFile #>" Inherits="System.Web.Mvc.ViewPage<#= GetViewPageType() #>" %> + + +<#= mvcHost.ViewName #> + + + + + + <# Else #> <%@ Page Language="VB" Inherits="System.Web.Mvc.ViewPage<#= GetViewPageType() #>" %> diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Empty.tt b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Empty.tt index 8d020929d1..661e938e6e 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Empty.tt +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/ItemTemplates/VisualBasic/CodeTemplates/AddView/VBHTML/Empty.tt @@ -5,6 +5,14 @@ #> <# If mvcHost.IsPartialView Then #> +<# ElseIf mvcHost.IsContentPage Then #> +@Code + ViewData("Title") = "<#= mvcHost.ViewName #>" + Layout = "<#= mvcHost.MasterPageFile #>" +End Code + +

<#= mvcHost.ViewName #>

+ <# Else #> <#= GetModelDirective() #> diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectView.xaml b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectView.xaml index ceeb25fa1d..01b6062ec3 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectView.xaml +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectView.xaml @@ -124,7 +124,7 @@ Grid.Row="7" Grid.Column="1" IsEnabled="{Binding Path=IsContentPage}" - Text="{Binding Path=ContentPage}"/> + Text="{Binding Path=MasterPageFile}"/>