From 2877b7bda42060eda3d856ade69b368790cc451a Mon Sep 17 00:00:00 2001 From: Shannon Deminick Date: Sat, 2 Mar 2013 05:46:00 +0600 Subject: [PATCH] Fixes: #U4-1819 --- .../EnumerableExtensionsTests.cs | 10 +++++++++- .../Mvc/AreaRegistrationExtensions.cs | 2 +- src/Umbraco.Web/Mvc/NotChildAction.cs | 20 +++++++++++++++++++ src/Umbraco.Web/Umbraco.Web.csproj | 1 + 4 files changed, 31 insertions(+), 2 deletions(-) create mode 100644 src/Umbraco.Web/Mvc/NotChildAction.cs diff --git a/src/Umbraco.Tests/EnumerableExtensionsTests.cs b/src/Umbraco.Tests/EnumerableExtensionsTests.cs index 23ff7f8aca..870e607f19 100644 --- a/src/Umbraco.Tests/EnumerableExtensionsTests.cs +++ b/src/Umbraco.Tests/EnumerableExtensionsTests.cs @@ -29,6 +29,10 @@ namespace Umbraco.Tests new TestItem() { Children = new List() + { + new TestItem(), + new TestItem() + } } } } @@ -65,11 +69,15 @@ namespace Umbraco.Tests var flattened = hierarchy.Children.FlattenList(x => x.Children); - Assert.AreEqual(8, flattened); + Assert.AreEqual(10, flattened.Count()); } private class TestItem { + public TestItem() + { + Children = Enumerable.Empty(); + } public IEnumerable Children { get; set; } } diff --git a/src/Umbraco.Web/Mvc/AreaRegistrationExtensions.cs b/src/Umbraco.Web/Mvc/AreaRegistrationExtensions.cs index a36c50b3e9..cb905c3569 100644 --- a/src/Umbraco.Web/Mvc/AreaRegistrationExtensions.cs +++ b/src/Umbraco.Web/Mvc/AreaRegistrationExtensions.cs @@ -7,7 +7,7 @@ using Umbraco.Core.Configuration; namespace Umbraco.Web.Mvc { - internal static class AreaRegistrationExtensions + internal static class AreaRegistrationExtensions { /// /// Creates a custom individual route for the specified controller plugin. Individual routes diff --git a/src/Umbraco.Web/Mvc/NotChildAction.cs b/src/Umbraco.Web/Mvc/NotChildAction.cs new file mode 100644 index 0000000000..8106ac47b1 --- /dev/null +++ b/src/Umbraco.Web/Mvc/NotChildAction.cs @@ -0,0 +1,20 @@ +using System.Web.Mvc; + +namespace Umbraco.Web.Mvc +{ + /// + /// Used to ensure that actions with duplicate names that are not child actions don't get executed when + /// we are Posting and not redirecting. + /// + /// + /// See issue: http://issues.umbraco.org/issue/U4-1819 + /// + public class NotChildAction : ActionMethodSelectorAttribute + { + public override bool IsValidForRequest(ControllerContext controllerContext, System.Reflection.MethodInfo methodInfo) + { + var isChildAction = controllerContext.IsChildAction; + return !isChildAction; + } + } +} \ No newline at end of file diff --git a/src/Umbraco.Web/Umbraco.Web.csproj b/src/Umbraco.Web/Umbraco.Web.csproj index f022459ee0..0967d2d69c 100644 --- a/src/Umbraco.Web/Umbraco.Web.csproj +++ b/src/Umbraco.Web/Umbraco.Web.csproj @@ -322,6 +322,7 @@ +