Аннотации к данным не работают должным образом даже после применения обязательного атрибута.C#

Место общения программистов C#
Ответить
Anonymous
 Аннотации к данным не работают должным образом даже после применения обязательного атрибута.

Сообщение Anonymous »

У меня есть класс модели в .NET 6.0 и примененные аннотации к данным. У меня есть класс расширения ApiRequestValidation, который возвращает результаты проверки после проверки JSON в теле запроса.

Код: Выделить всё

using System.ComponentModel.DataAnnotations;
using Newtonsoft.Json;

public class ExternalNotificationRequest
{
/// 
/// Appointment details
/// 
[Required(AllowEmptyStrings = false, ErrorMessage = "Please provide a appointment object values.")]
[JsonProperty("appointment")]
public Appointment? Appointment { get; set; }
}

public class Appointment
{
/// 
/// Notification type such as Create/Update/Delete
/// 
[JsonProperty("type")]
[Required(AllowEmptyStrings = false, ErrorMessage = "Please provide a appointment type. Valid values are  CREATE,UPDATE,DELETE.")]
public string? Type { get; set; }

/// 
/// appointment public id
/// 
[JsonProperty("publicId")]
[MaxLength(64)]
[MinLength(64)]
[Required(AllowEmptyStrings = false, ErrorMessage = "Please provide an appointment public id.")]
public string? PublicId { get; set; }
}

public static class ApiRequestValidation
{
public static bool IsValid(this object request, out ICollection validationResults)
{
validationResults = new List();
return Validator.TryValidateObject(request, new ValidationContext(request), validationResults, true);
}
}
Я использую ApiRequestValidation в функции Azure:

Код: Выделить всё

ExternalNotificationRequest externalNotificationRequest = new ExternalNotificationRequest();
_logger.LogInformation("{FunctionName} Request Body: {requestBody}", functionName, requestBody);

externalNotificationRequest =
JsonConvert.DeserializeObject(requestBody)
?? new ExternalNotificationRequest();

// Validate Data Annotations.
if (!externalNotificationRequest.IsValid(validationResults: out var validationResults))
{
return messageExtensions.RenderApiMessage(_logger, StatusCodes.Status400BadRequest, validationResults.Select(s => s.ErrorMessage).FirstOrDefault(), functionName, validationResults.Select(s => s.MemberNames.FirstOrDefault()).FirstOrDefault().ToString());
}
Пример данных JSON:

Код: Выделить всё

{
"appointment": {
"type": "create",
"publicId": ""
}
}
Тестовый пример: с этим JSON моя аннотация данных работает неправильно. Я не получаю сообщение об ошибке, если publicId пуст или имеет значение NULL.
Что мне не хватает?

Подробнее здесь: https://stackoverflow.com/questions/784 ... ed-attribu
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»