diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ModelBinding/ExtraPropertyBindingHelper.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ModelBinding/ExtraPropertyBindingHelper.cs
index cfc8754415..0bd4c43173 100644
--- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ModelBinding/ExtraPropertyBindingHelper.cs
+++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/ModelBinding/ExtraPropertyBindingHelper.cs
@@ -5,33 +5,33 @@ namespace Volo.Abp.AspNetCore.Mvc.ModelBinding
public static class ExtraPropertyBindingHelper
{
///
- /// modelName is a string like "UserInfo.ExtraProperties[SocialSecurityNumber]"
+ /// is a string like "UserInfo.ExtraProperties[SocialSecurityNumber]"
/// This method returns "SocialSecurityNumber" for this example. */
///
- public static string ExtractExtraPropertyName(string modelName)
+ public static string ExtractExtraPropertyName(string expression)
{
- var index = modelName.IndexOf(".ExtraProperties[", StringComparison.Ordinal);
+ var index = expression.IndexOf("ExtraProperties[", StringComparison.Ordinal);
if (index < 0)
{
return null;
}
- return modelName.Substring(index + 17, modelName.Length - index - 18);
+ return expression.Substring(index + 16, expression.Length - index - 17);
}
///
- /// modelName is a string like "UserInfo.ExtraProperties[SocialSecurityNumber]"
+ /// is a string like "UserInfo.ExtraProperties[SocialSecurityNumber]"
/// This method returns "UserInfo" for this example.
///
- public static string ExtractContainerName(string modelName)
+ public static string ExtractContainerName(string expression)
{
- var index = modelName.IndexOf(".ExtraProperties[", StringComparison.Ordinal);
+ var index = expression.IndexOf("ExtraProperties[", StringComparison.Ordinal);
if (index < 0)
{
return null;
}
- return modelName.Left(index);
+ return expression.Left(index).TrimEnd('.');
}
}
}
diff --git a/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ModelBinding/ExtraPropertyBindingHelper_Tests.cs b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ModelBinding/ExtraPropertyBindingHelper_Tests.cs
new file mode 100644
index 0000000000..4f96fae3f5
--- /dev/null
+++ b/framework/test/Volo.Abp.AspNetCore.Mvc.Tests/Volo/Abp/AspNetCore/Mvc/ModelBinding/ExtraPropertyBindingHelper_Tests.cs
@@ -0,0 +1,48 @@
+using Shouldly;
+using Xunit;
+
+namespace Volo.Abp.AspNetCore.Mvc.ModelBinding
+{
+ public class ExtraPropertyBindingHelper_Tests
+ {
+ [Fact]
+ public void ExtractExtraPropertyName_Tests()
+ {
+ ExtraPropertyBindingHelper.ExtractExtraPropertyName(
+ "MyObject.UserInfo.ExtraProperties[SocialSecurityNumber]"
+ ).ShouldBe("SocialSecurityNumber");
+
+ ExtraPropertyBindingHelper.ExtractExtraPropertyName(
+ "UserInfo.ExtraProperties[SocialSecurityNumber]"
+ ).ShouldBe("SocialSecurityNumber");
+
+ ExtraPropertyBindingHelper.ExtractExtraPropertyName(
+ "ExtraProperties[SocialSecurityNumber]"
+ ).ShouldBe("SocialSecurityNumber");
+
+ ExtraPropertyBindingHelper.ExtractExtraPropertyName(
+ "SocialSecurityNumber"
+ ).ShouldBeNull();
+ }
+
+ [Fact]
+ public void ExtractContainerName_Tests()
+ {
+ ExtraPropertyBindingHelper.ExtractContainerName(
+ "MyObject.UserInfo.ExtraProperties[SocialSecurityNumber]"
+ ).ShouldBe("MyObject.UserInfo");
+
+ ExtraPropertyBindingHelper.ExtractContainerName(
+ "UserInfo.ExtraProperties[SocialSecurityNumber]"
+ ).ShouldBe("UserInfo");
+
+ ExtraPropertyBindingHelper.ExtractContainerName(
+ "ExtraProperties[SocialSecurityNumber]"
+ ).ShouldBe("");
+
+ ExtraPropertyBindingHelper.ExtractContainerName(
+ "SocialSecurityNumber"
+ ).ShouldBeNull();
+ }
+ }
+}