diff --git a/src/Umbraco.Core/Models/Content.cs b/src/Umbraco.Core/Models/Content.cs
index 815812279d..142d7540c2 100644
--- a/src/Umbraco.Core/Models/Content.cs
+++ b/src/Umbraco.Core/Models/Content.cs
@@ -3,6 +3,7 @@ using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Runtime.Serialization;
+using Umbraco.Core.Exceptions;
namespace Umbraco.Core.Models
{
@@ -213,7 +214,10 @@ namespace Umbraco.Core.Models
// sets a publish name
// internal for repositories
internal void SetPublishName(int? languageId, string name)
- {
+ {
+ if (string.IsNullOrWhiteSpace(name))
+ throw new ArgumentNullOrEmptyException(nameof(name));
+
if (languageId == null)
{
PublishName = name;
@@ -412,8 +416,9 @@ namespace Umbraco.Core.Models
// copy names
ClearNames();
- foreach (var (languageId, name) in other.Names)
+ foreach (var (languageId, name) in other.Names)
SetName(languageId, name);
+ Name = other.Name;
}
///
diff --git a/src/Umbraco.Core/Models/ContentBase.cs b/src/Umbraco.Core/Models/ContentBase.cs
index 9b6414e4c8..8203cba985 100644
--- a/src/Umbraco.Core/Models/ContentBase.cs
+++ b/src/Umbraco.Core/Models/ContentBase.cs
@@ -136,6 +136,12 @@ namespace Umbraco.Core.Models
///
public virtual void SetName(int? languageId, string name)
{
+ if (string.IsNullOrWhiteSpace(name))
+ {
+ ClearName(languageId);
+ return;
+ }
+
if (languageId == null)
{
Name = name;
@@ -152,6 +158,20 @@ namespace Umbraco.Core.Models
OnPropertyChanged(Ps.Value.NamesSelector);
}
+ private void ClearName(int? languageId)
+ {
+ if (languageId == null)
+ {
+ Name = null;
+ return;
+ }
+
+ if (_names == null) return;
+ _names.Remove(languageId.Value);
+ if (_names.Count == 0)
+ _names = null;
+ }
+
protected virtual void ClearNames()
{
_names = null;