Former-commit-id: 414328f9967b1072d83c89953d5dd9cbd55e644c
TangShanKaiPing
wanggang 5 years ago
parent 5b8386ee4a
commit ba6a738d77

Binary file not shown.

@ -26,6 +26,17 @@ namespace CSharpObjectJsonSchema.Controllers
return CreateJson(controller, metadata as DefaultModelMetadata); 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<IModelMetadataProvider>().GetMetadataForType(type);
return CreateJson(controller, metadata as DefaultModelMetadata);
}
public static object CreateJson(this ControllerBase controller, DefaultModelMetadata metadata) public static object CreateJson(this ControllerBase controller, DefaultModelMetadata metadata)
{ {
if (metadata is null) if (metadata is null)
@ -40,7 +51,7 @@ namespace CSharpObjectJsonSchema.Controllers
if (metadata.IsComplexType && metadata.IsCollectionType) if (metadata.IsComplexType && metadata.IsCollectionType)
{ {
json.type = "array"; json.type = "array";
json.items = new { type = metadata.ModelType.GenericTypeArguments[0].Name }; json.items = controller.GetJsonSchema(metadata.ModelType.GenericTypeArguments[0]);
} }
else if (metadata.IsEnum) else if (metadata.IsEnum)
{ {

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Microsoft.AspNetCore.Mvc.Rendering;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.ComponentModel; using System.ComponentModel;
@ -52,6 +53,8 @@ namespace CSharpObjectJsonSchema.Models
public List<Guid> Ids { get; set; } = new List<Guid>(); public List<Guid> Ids { get; set; } = new List<Guid>();
public List<SelectListItem> SelectList { get; set; } = new List<SelectListItem>();
//public TestModel Model1 { get; set; } //public TestModel Model1 { get; set; }
} }

Loading…
Cancel
Save