У меня есть действие контроллера, которое берет документ JSON как тело запроса POST. Я хотел бы, чтобы автоматически создать JObject
от того, с помощью модели связывания, например:В ASP.NET MVC, могу ли я автоматически моделировать привязку к объекту JObject из тела POST?
[HttpPost]
public ActionResult Index([FromBody] JObject data)
{
// "data" is now a populated JObject object
}
Но я получаю ошибки о не создавая абстрактный класс. Я пытался что-то продлить с JObject
, но это тоже не получится.
Я знаю, что могу просто прочитать тело запроса и называть его JObject.Parse
(я делаю это, поэтому он действительно работает), но моя идея сверху кажется гораздо более элегантной.
Возможно ли это?
Edit: Фактическая ошибка:
System.MissingMethodException: Cannot create an abstract class.
[MissingMethodException: Cannot create an abstract class.]
System.RuntimeTypeHandle.CreateInstance(RuntimeType type, Boolean publicOnly, Boolean noCheck, Boolean& canBeCached, RuntimeMethodHandleInternal& ctor, Boolean& bNeedSecurityCheck)
[Stack trace continues...]
Запрос никогда не попадает в действие контроллера.
На основе моих исследований JObject
не абстрактно, а просто, чтобы быть уверенным, я сделал это:
public class Entry : JObject
Тогда
public ActionResult Index([FromBody] Entry data)
Не работает. Такая же ошибка.
Является ли JSON вашего документа типа JObject? – CodingYoshi
'JObject' - всего лишь общий объект для размещения JSON любого типа. Подобный «XmlDocument» хранит XML любого типа. Это из библиотеки 'JSON.Net'. – Deane
Является ли 'FromBody' чем-то, что вы создали? – CodingYoshi