Контроллер ASP.NET принимает объект, который выглядит примерно так:
public class Data
{
public string Text {get;set;}
[JsonIgnore] public int Length => Text.Length;
}
Значение свойства текста необязательно. Однако, когда он равен NULL, MVC завершается неудачно во время привязки модели. По какой-то причине код привязки MVC пытается получить доступ к полю длины и получает исключение из-за пустого текста.
Я наивно предполагал, что атрибут JsonIgnore будет учитываться MVC илипо крайней мере, он не будет пытаться десериализовать свойство только для чтения. Как я могу скрыть это свойство от привязки MVC? Есть ли атрибут, который работает как JsonIgnore, который MVC понимает?
Платформа .net core 2.1
РЕДАКТИРОВАТЬ: Отмеченный ответ указал мне в правильном направлении. Я отключил проверку на основе информации с этой страницы Проверка модели в ASP.NET Core MVC и Razor Pages
В объекте запуска ConfigureServices я добавил эту строку:
services.AddSingleton<IObjectModelValidator>(new NullObjectModelValidator());
и создал NullObjectModelValidator
public class NullObjectModelValidator : IObjectModelValidator
{
public void Validate(ActionContext actionContext,
ValidationStateDictionary validationState, string prefix, object model)
{
}
}
Это не правильное решение в каждом случае, но если данные не нуждаются в проверке, тогда этот подход работает.