From ba6a738d77c2edc6b0abaf3d9a6f4044a3b25a67 Mon Sep 17 00:00:00 2001 From: wanggang <76527413@qq.com> Date: Mon, 20 Apr 2020 17:00:59 +0800 Subject: [PATCH] update Former-commit-id: 414328f9967b1072d83c89953d5dd9cbd55e644c --- docs/业务分析.xlsx | Bin 0 -> 10579 bytes .../Controllers/ControllerExtensions.cs | 13 ++++++++++++- labs/CSharpObjectJsonSchema/Models/TestModel.cs | 3 +++ 3 files changed, 15 insertions(+), 1 deletion(-) create mode 100644 docs/业务分析.xlsx diff --git a/docs/业务分析.xlsx b/docs/业务分析.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..a83628e8904398fc313496f11bca097f2382e982 GIT binary patch literal 10579 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 a{0~2_tndhGg8%>;^hXOdV*=WrcmD@q9$gv$ literal 0 HcmV?d00001 diff --git a/labs/CSharpObjectJsonSchema/Controllers/ControllerExtensions.cs b/labs/CSharpObjectJsonSchema/Controllers/ControllerExtensions.cs index ef6d609c..70da06a0 100644 --- a/labs/CSharpObjectJsonSchema/Controllers/ControllerExtensions.cs +++ b/labs/CSharpObjectJsonSchema/Controllers/ControllerExtensions.cs @@ -26,6 +26,17 @@ namespace CSharpObjectJsonSchema.Controllers return CreateJson(controller, metadata as DefaultModelMetadata); } + public static object GetJsonSchema(this ControllerBase controller, Type type) + { + if (controller is null) + { + throw new ArgumentNullException(nameof(controller)); + } + var metadata = controller.HttpContext.RequestServices.GetRequiredService().GetMetadataForType(type); + + return CreateJson(controller, metadata as DefaultModelMetadata); + } + public static object CreateJson(this ControllerBase controller, DefaultModelMetadata metadata) { if (metadata is null) @@ -40,7 +51,7 @@ namespace CSharpObjectJsonSchema.Controllers if (metadata.IsComplexType && metadata.IsCollectionType) { json.type = "array"; - json.items = new { type = metadata.ModelType.GenericTypeArguments[0].Name }; + json.items = controller.GetJsonSchema(metadata.ModelType.GenericTypeArguments[0]); } else if (metadata.IsEnum) { diff --git a/labs/CSharpObjectJsonSchema/Models/TestModel.cs b/labs/CSharpObjectJsonSchema/Models/TestModel.cs index 6f191e79..9ab8fe7a 100644 --- a/labs/CSharpObjectJsonSchema/Models/TestModel.cs +++ b/labs/CSharpObjectJsonSchema/Models/TestModel.cs @@ -1,4 +1,5 @@ using Microsoft.AspNetCore.Mvc; +using Microsoft.AspNetCore.Mvc.Rendering; using System; using System.Collections.Generic; using System.ComponentModel; @@ -52,6 +53,8 @@ namespace CSharpObjectJsonSchema.Models public List Ids { get; set; } = new List(); + public List SelectList { get; set; } = new List(); + //public TestModel Model1 { get; set; } }