From 06609002fa99370ff9a3be91614dad3af3f84b60 Mon Sep 17 00:00:00 2001 From: maliming Date: Fri, 18 Oct 2024 10:22:05 +0800 Subject: [PATCH] Check if id parameter can convert from `string`. Resolve #20844 --- .../AspNetCore/Mvc/Conventions/ConventionalRouteBuilder.cs | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) 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 9295d9252d..62dfc66f93 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 @@ -1,4 +1,5 @@ using System; +using System.ComponentModel; using System.Linq; using System.Reflection; using Microsoft.AspNetCore.Mvc.ApplicationModels; @@ -35,7 +36,8 @@ public class ConventionalRouteBuilder : IConventionalRouteBuilder, ITransientDep var idParameterModel = action.Parameters.FirstOrDefault(p => p.ParameterName == "id"); if (idParameterModel != null) { - if (TypeHelper.IsPrimitiveExtended(idParameterModel.ParameterType, includeEnums: true)) + if (TypeHelper.IsPrimitiveExtended(idParameterModel.ParameterType, includeEnums: true) + || TypeDescriptor.GetConverter(idParameterModel.ParameterType).CanConvertFrom(typeof(string))) { url += "/{id}"; } @@ -156,4 +158,4 @@ public class ConventionalRouteBuilder : IConventionalRouteBuilder, ITransientDep { return secondaryId.ParameterName; } -} \ No newline at end of file +}