Browse Source

Set default master page when selecting ASPX view engine in ASP.NET MVC Add View dialog.

pull/18/head
Matt Ward 14 years ago
parent
commit
d504eb9f1a
  1. 17
      src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs
  2. 43
      src/AddIns/BackendBindings/AspNet.Mvc/Test/Src/AddMvcViewToProjectViewModelTests.cs

17
src/AddIns/BackendBindings/AspNet.Mvc/Project/Src/AddMvcViewToProjectViewModel.cs

@ -41,6 +41,7 @@ namespace ICSharpCode.AspNet.Mvc @@ -41,6 +41,7 @@ namespace ICSharpCode.AspNet.Mvc
CreateModelClassesForSelectedFolder();
CreateCommands();
AddViewEngines();
SetDefaultMasterPage();
}
void CreateModelClassesForSelectedFolder()
@ -98,6 +99,15 @@ namespace ICSharpCode.AspNet.Mvc @@ -98,6 +99,15 @@ namespace ICSharpCode.AspNet.Mvc
SelectedViewEngine = viewEngines[0];
}
void SetDefaultMasterPage()
{
if (IsAspxViewEngineSelected) {
MasterPageFile = "~/Views/Shared/Site.Master";
} else {
MasterPageFile = String.Empty;
}
}
public IEnumerable<MvcViewEngineViewModel> ViewEngines {
get { return viewEngines; }
}
@ -107,17 +117,20 @@ namespace ICSharpCode.AspNet.Mvc @@ -107,17 +117,20 @@ namespace ICSharpCode.AspNet.Mvc
set {
selectedViewEngine = value;
viewFileName.TemplateType = selectedViewEngine.TemplateType;
UpdateSelectedViewEngineFlags();
OnSelectedViewEngineChanged();
}
}
void UpdateSelectedViewEngineFlags()
void OnSelectedViewEngineChanged()
{
IsAspxViewEngineSelected = selectedViewEngine.TemplateType.IsAspx();
IsRazorViewEngineSelected = selectedViewEngine.TemplateType.IsRazor();
SetDefaultMasterPage();
OnPropertyChanged(viewModel => viewModel.IsAspxViewEngineSelected);
OnPropertyChanged(viewModel => viewModel.IsRazorViewEngineSelected);
OnPropertyChanged(viewModel => viewModel.MasterPageFile);
}
public bool IsRazorViewEngineSelected { get; private set; }

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

@ -652,5 +652,48 @@ namespace AspNet.Mvc.Tests @@ -652,5 +652,48 @@ namespace AspNet.Mvc.Tests
Assert.AreEqual(String.Empty, masterPage);
}
[Test]
public void MasterPageFile_DefaultValue_ReturnsSharedSiteMasterPageFile()
{
CreateViewModel();
string masterPage = viewModel.MasterPageFile;
Assert.AreEqual("~/Views/Shared/Site.Master", masterPage);
}
[Test]
public void MasterPageFile_ViewEngineChangedToRazor_ReturnsEmptyString()
{
CreateViewModel();
SelectRazorViewEngine();
string masterPage = viewModel.MasterPageFile;
Assert.AreEqual(String.Empty, masterPage);
}
[Test]
public void MasterPageFile_ViewEngineChangedToRazorAndThenBackToAspx_ReturnsSharedSiteMasterPageFile()
{
CreateViewModel();
SelectRazorViewEngine();
viewModel.MasterPageFile = "Test";
SelectAspxViewEngine();
string masterPage = viewModel.MasterPageFile;
Assert.AreEqual("~/Views/Shared/Site.Master", masterPage);
}
[Test]
public void MasterPageFile_ViewEngineChangedToRazor_PropertyChangedEventFiredForMasterPageFile()
{
CreateViewModel();
MonitorPropertyChangedEvents();
SelectRazorViewEngine();
bool fired = propertyChangedEvents.Contains("MasterPageFile");
Assert.IsTrue(fired);
}
}
}

Loading…
Cancel
Save