Swagger не собирает атрибуты ModelMetadataType в веб-интерфейсе?

#c# #asp.net #asp.net-core #swagger #swagger-ui

Вопрос:

У меня есть сгенерированный класс контракта на обслуживание, который я часто обновляю, где я хочу включить [Required] и [DefaultValue("abc")] атрибуты некоторых методов контракта.

Мое решение, чтобы мой код не разрушался при каждом обновлении, заключается в использовании [ModelMetadataType] атрибута. Похоже, это работает, но веб-интерфейс не показывает красный * цвет, чтобы указать, что требуется?

Вы можете видеть aaa , что значение по умолчанию установлено, но требуемый индикатор этого не делает. Если я оставлю поле пустым и запущу его, появится ошибка проверки.

введите описание изображения здесь

Сгенерированный класс контракта:

 [System.CodeDom.Compiler.GeneratedCodeAttribute("Microsoft.Tools.ServiceModel.Svcutil", "2.0.2")]
[System.Diagnostics.DebuggerStepThroughAttribute()] [System.Xml.Serialization.XmlTypeAttribute(Namespace="http://schemas.microsoft.com/dynamics/2010/01/datacontracts")]
public partial class CallContext
{
    public string Company {get; set;}
}
 

Мой класс метаданных:

 [ModelMetadataType(typeof(MyCallContextMetadata))]
public partial class CallContext
{
}

internal class MyCallContextMetadata
{
    [Required(AllowEmptyStrings =false)]
    [DefaultValue("aaa")]
    public string Company { get; set; }
}
 

Комментарии:

1. Как вы получаете параметр в своем бэкэнде? Можете ли вы поделиться методом действия?

2. @Карни. извините за задержку, я не понимаю, что это значит. Я новичок в ASP.net дэв. У меня есть старая WCF служба, которую я просто пытаюсь завернуть, чтобы она была в формате JSON и имела документы swagger, поэтому я просто сделал Add Connected Service это и позволил ей сгенерировать контракт на передачу данных. Контракт с данными часто меняется, поэтому мне приходится постоянно щелкать правой кнопкой мыши и делать «Обновить ссылку на веб-службу WCF…», поэтому моим решением было создать класс метаданных, который сохранялся бы, а затем я мог бы обновить (регенерировать) классы контрактов и не беспокоиться о потере всех моих атрибутов. Каков метод действия?