#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…», поэтому моим решением было создать класс метаданных, который сохранялся бы, а затем я мог бы обновить (регенерировать) классы контрактов и не беспокоиться о потере всех моих атрибутов. Каков метод действия?