Browse Source

Do not show Visual Basic classes from My namespace in model lists in ASP.NET MVC Add View dialog.

pull/18/head
Matt Ward 14 years ago
parent
commit
6560b99a46
  1. 14
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcModelClassLocator.cs
  2. 43
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcModelClassLocatorTests.cs

14
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcModelClassLocator.cs

@ -23,7 +23,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -23,7 +23,7 @@ namespace ICSharpCode.AspNet.Mvc
public IEnumerable<IMvcClass> GetModelClasses(IMvcProject project)
{
foreach (IMvcClass c in GetAllClassesInProject(project)) {
if (IsModelClass(c)) {
if (IsModelClass(c, project)) {
yield return c;
}
}
@ -40,12 +40,14 @@ namespace ICSharpCode.AspNet.Mvc @@ -40,12 +40,14 @@ namespace ICSharpCode.AspNet.Mvc
return parserService.GetProjectContent(project);
}
bool IsModelClass(IMvcClass c)
bool IsModelClass(IMvcClass c, IMvcProject project)
{
if (IsBaseClassMvcController(c)) {
return false;
} else if (IsHttpApplication(c)) {
return false;
} else if (IsVisualBasicClassFromMyNamespace(c, project)) {
return false;
}
return true;
}
@ -59,5 +61,13 @@ namespace ICSharpCode.AspNet.Mvc @@ -59,5 +61,13 @@ namespace ICSharpCode.AspNet.Mvc
{
return c.BaseClassFullName == "System.Web.Mvc.Controller";
}
bool IsVisualBasicClassFromMyNamespace(IMvcClass c, IMvcProject project)
{
if (project.GetTemplateLanguage().IsVisualBasic()) {
return c.FullName.Contains(".My.");
}
return false;
}
}
}

43
src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcModelClassLocatorTests.cs

@ -49,6 +49,16 @@ namespace AspNet.Mvc.Tests @@ -49,6 +49,16 @@ namespace AspNet.Mvc.Tests
return GetModelClasses().Count;
}
void UseVisualBasicProject()
{
fakeProject.SetVisualBasicAsTemplateLanguage();
}
void UseCSharpProject()
{
fakeProject.SetCSharpAsTemplateLanguage();
}
[Test]
public void GetModelClasses_OneModelClassInProject_ReturnModelClassWithExpectedName()
{
@ -99,5 +109,38 @@ namespace AspNet.Mvc.Tests @@ -99,5 +109,38 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual(0, count);
}
[Test]
public void GetModelClasses_VisualBasicProjectAndMyApplicationClassInProject_ClassNotReturnedInModelClasses()
{
CreateLocator();
UseVisualBasicProject();
AddModelClass("VbApp.My.MyApplication");
int count = GetModelClassCount();
Assert.AreEqual(0, count);
}
[Test]
public void GetModelClasses_VisualBasicProjectAndMySettingsClassInProject_ClassNotReturnedInModelClasses()
{
CreateLocator();
UseVisualBasicProject();
AddModelClass("TestVisualBasicApp.My.MySettings");
int count = GetModelClassCount();
Assert.AreEqual(0, count);
}
[Test]
public void GetModelClasses_CSharpProjectAndMyApplicationClassInProject_ClassIsReturnedInModelClasses()
{
CreateLocator();
UseCSharpProject();
AddModelClass("TestApp.My.MySettings");
string modelClassName = GetFirstModelClassName();
Assert.AreEqual("TestApp.My.MySettings", modelClassName);
}
}
}

Loading…
Cancel
Save