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);
}
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)
{
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)
{

@ -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<Guid> Ids { get; set; } = new List<Guid>();
public List<SelectListItem> SelectList { get; set; } = new List<SelectListItem>();
//public TestModel Model1 { get; set; }
}

Loading…
Cancel
Save