diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcModelClassLocator.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcModelClassLocator.cs index 1508670f19..201c92cbeb 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcModelClassLocator.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/MvcModelClassLocator.cs @@ -23,7 +23,7 @@ namespace ICSharpCode.AspNet.Mvc public IEnumerable 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 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 { return c.BaseClassFullName == "System.Web.Mvc.Controller"; } + + bool IsVisualBasicClassFromMyNamespace(IMvcClass c, IMvcProject project) + { + if (project.GetTemplateLanguage().IsVisualBasic()) { + return c.FullName.Contains(".My."); + } + return false; + } } } diff --git a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcModelClassLocatorTests.cs b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcModelClassLocatorTests.cs index 82c4f52f84..f65c11066f 100644 --- a/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcModelClassLocatorTests.cs +++ b/src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/MvcModelClassLocatorTests.cs @@ -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 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); + } } }