From 57d0f8f74e9251a0fcfcb021c475a82e6d6be434 Mon Sep 17 00:00:00 2001 From: maliming Date: Mon, 11 Nov 2024 14:59:41 +0800 Subject: [PATCH] Remove `secondaryIds` from path if its `Optional`. Resolve #21009 --- .../Abp/AspNetCore/Mvc/Conventions/ConventionalRouteBuilder.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Conventions/ConventionalRouteBuilder.cs b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Conventions/ConventionalRouteBuilder.cs index 62dfc66f932..48919e56daa 100644 --- a/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Conventions/ConventionalRouteBuilder.cs +++ b/framework/src/Volo.Abp.AspNetCore.Mvc/Volo/Abp/AspNetCore/Mvc/Conventions/ConventionalRouteBuilder.cs @@ -2,6 +2,7 @@ using System.ComponentModel; using System.Linq; using System.Reflection; +using System.Runtime.InteropServices; using Microsoft.AspNetCore.Mvc.ApplicationModels; using Microsoft.Extensions.Options; using Volo.Abp.DependencyInjection; @@ -63,7 +64,7 @@ public virtual string Build( //Add secondary Id var secondaryIds = action.Parameters .Where(p => p.ParameterName.EndsWith("Id", StringComparison.Ordinal)).ToList(); - if (secondaryIds.Count == 1) + if (secondaryIds.Count == 1 && !secondaryIds[0].Attributes.Any(x => x is OptionalAttribute)) { url += $"/{{{NormalizeSecondaryIdNameCase(secondaryIds[0], configuration)}}}"; }