Browse Source

Support ControllerRootName in MVC T4 templates.

pull/18/head
Matt Ward 14 years ago
parent
commit
b1047cafec
  1. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj
  2. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcTextTemplateHost.cs
  3. 48
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcControllerName.cs
  4. 21
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateHost.cs
  5. 1
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcTextTemplateHost.cs
  6. 40
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcTextTemplateHostTests.cs

1
src/AddIns/BackendBindings/AspNet.Mvc/Project/AspNet.Mvc.csproj

@ -75,6 +75,7 @@ @@ -75,6 +75,7 @@
<Compile Include="Src\MvcAddViewTextTemplateFolder.cs" />
<Compile Include="Src\MvcControllerFileGenerator.cs" />
<Compile Include="Src\MvcControllerFileName.cs" />
<Compile Include="Src\MvcControllerName.cs" />
<Compile Include="Src\MvcControllerTextTemplateFileName.cs" />
<Compile Include="Src\MvcFileGenerator.cs" />
<Compile Include="Src\MvcFileName.cs" />

1
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/IMvcTextTemplateHost.cs

@ -11,6 +11,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -11,6 +11,7 @@ namespace ICSharpCode.AspNet.Mvc
{
string ViewName { get; set; }
string ControllerName { get; set; }
string ControllerRootName { get; set; }
string Namespace { get; set; }
bool ProcessTemplate(string inputFile, string outputFile);

48
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcControllerName.cs

@ -0,0 +1,48 @@ @@ -0,0 +1,48 @@
// Copyright (c) AlphaSierraPapa for the SharpDevelop Team (for details please see \doc\copyright.txt)
// This code is distributed under the GNU LGPL (for details please see \doc\license.txt)
using System;
namespace ICSharpCode.AspNet.Mvc
{
public class MvcControllerName
{
string name = String.Empty;
string rootName = String.Empty;
public string Name {
get { return name; }
set {
name = UseEmptyStringIfNull(value);
UpdateRootName();
}
}
string UseEmptyStringIfNull(string value)
{
if (value != null) {
return value;
}
return String.Empty;
}
public string RootName {
get { return rootName; }
set { rootName = UseEmptyStringIfNull(value); }
}
void UpdateRootName()
{
rootName = GetRootName();
}
string GetRootName()
{
int index = name.IndexOf("Controller", StringComparison.InvariantCultureIgnoreCase);
if (index > 0) {
return name.Substring(0, index);
}
return name;
}
}
}

21
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcTextTemplateHost.cs

@ -9,7 +9,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -9,7 +9,7 @@ namespace ICSharpCode.AspNet.Mvc
public class MvcTextTemplateHost : TextTemplatingHost, IMvcTextTemplateHost
{
string viewName = String.Empty;
string controllerName = String.Empty;
MvcControllerName controllerName = new MvcControllerName();
string @namespace = String.Empty;
public MvcTextTemplateHost(
@ -34,11 +34,11 @@ namespace ICSharpCode.AspNet.Mvc @@ -34,11 +34,11 @@ namespace ICSharpCode.AspNet.Mvc
}
public string ViewName {
get { return GetValueOrUseEmptyStringIfNull(viewName); }
set { viewName = value; }
get { return viewName; }
set { viewName = UseEmptyStringIfNull(value); }
}
string GetValueOrUseEmptyStringIfNull(string value)
string UseEmptyStringIfNull(string value)
{
if (value != null) {
return value;
@ -47,13 +47,18 @@ namespace ICSharpCode.AspNet.Mvc @@ -47,13 +47,18 @@ namespace ICSharpCode.AspNet.Mvc
}
public string ControllerName {
get { return GetValueOrUseEmptyStringIfNull(controllerName); }
set { controllerName = value; }
get { return controllerName.Name; }
set { controllerName.Name = value; }
}
public string ControllerRootName {
get { return controllerName.RootName; }
set { controllerName.RootName = value; }
}
public string Namespace {
get { return GetValueOrUseEmptyStringIfNull(@namespace); }
set { @namespace = value; }
get { return @namespace; }
set { @namespace = UseEmptyStringIfNull(value); }
}
}
}

1
src/AddIns/BackendBindings/AspNet.Mvc/Test/Helpers/FakeMvcTextTemplateHost.cs

@ -34,6 +34,7 @@ namespace AspNet.Mvc.Tests.Helpers @@ -34,6 +34,7 @@ namespace AspNet.Mvc.Tests.Helpers
public string ViewName { get; set; }
public string ControllerName { get; set; }
public string ControllerRootName { get; set; }
public string Namespace { get; set; }
public CompilerErrorCollection Errors { get; set; }

40
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcTextTemplateHostTests.cs

@ -46,5 +46,45 @@ namespace AspNet.Mvc.Tests @@ -46,5 +46,45 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual(String.Empty, ns);
}
[Test]
public void ControllerRootName_SetToNull_ReturnsEmptyString()
{
CreateHost();
host.ControllerRootName = null;
string controllerRootName = host.ControllerRootName;
Assert.AreEqual(String.Empty, controllerRootName);
}
[Test]
public void ControllerRootName_ControllerNameSetToAboutController_ControllerRootNameUpdatedToAbout()
{
CreateHost();
host.ControllerName = "AboutController";
string controllerRootName = host.ControllerRootName;
Assert.AreEqual("About", controllerRootName);
}
[Test]
public void ControllerRootName_ControllerNameSetToHome_ControllerRootNameUpdatedToHome()
{
CreateHost();
host.ControllerName = "Home";
string controllerRootName = host.ControllerRootName;
Assert.AreEqual("Home", controllerRootName);
}
[Test]
public void ControllerRootName_ControllerNameSetToHomeControllerWithControllerInUpperCase_ControllerRootNameUpdatedToHome()
{
CreateHost();
host.ControllerName = "HomeCONTROLLER";
string controllerRootName = host.ControllerRootName;
Assert.AreEqual("Home", controllerRootName);
}
}
}

Loading…
Cancel
Save