У меня, казалось бы, довольно специфическая проблема.Мой контроллер верхнего уровня и модели для сложных параметров генерируются автоматически (Nswag).Часть модели состоит из перечислений.У меня есть параметры (в запросе или теле), которые должны содержать обратную косую черту.Их значения в автоматически сгенерированных перечислениях автоматически заменяются обратными слешами на подчеркивания.Чтобы проверка модели работала, мне нужно как-то перехватить привязку параметров с этими перечислениями и изменить их до того, как, следовательно, будет привязка.
Например, с учетом запроса
?param=A\B
(или тело с param="a\b"
) и Enum:
public enum SomeEnum
{
[System.Runtime.Serialization.EnumMember(Value = @"A\B")]
A_B = 0
}
Проверка модели не удалась, потому что A\B
, естественно, не найден в перечислении.
Я пробовал фильтры, пользовательские привязки моделей и т. Д., И кажется, что наилучшее место - привязка пользовательской модели, поскольку она может быть применена именно в точке привязки этой конкретной модели.Теперь проблема в том, что мне нужно изменить входящий параметр и привязать к измененной версии с подчеркиванием.Я не могу на всю жизнь узнать, как это сделать.Я реализовал собственный класс IModelBinder, который вызывается правильно, но ModelBindingResult.Success(model)
не изменяет то, что связано с .
Просто чтобы было ясно, это не имеет ничего общего с кодировкой URL илипривязка к коллекциям и т. д. Это все работает нормально.
Мне необходимо изменить параметры, связанные с конкретным Enum, чтобы они соответствовали автоматически сгенерированным свойствам enum.Любые идеи высоко ценится.