如何让这个控制器接受不同类型的json? [英] How can I make this controller accept different types of json?

查看:46
本文介绍了如何让这个控制器接受不同类型的json?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嘿伙计们,我的api中有这个控制器:



Hey guys, I have this controller in my api:

// POST: api/Events
        [HttpPost]
        [ResponseType(typeof(Event))]
        public async Task<IHttpActionResult> PostBook(Event events)
        {
            if (!ModelState.IsValid)
            {
                return BadRequest(ModelState);
            }

            db.Events.Add(events);
            await db.SaveChangesAsync();

            // New code:
            // Load author name
            db.Entry(events).Reference(e => e.Name).Load();

            var dto = new EventDto()
            {
                Name = events.Name,
                Project = events.Project,
                Objectives = events.Objectives,
                City = events.City,
                Country = events.Country,
                EventStart = events.EventStart,
                Departure = events.Departure,
                Arrival = events.Arrival,
                Registration = events.Registration,
                NationalTransportation = events.NationalTransportation,
                Accommodation = events.Accommodation,
                AcNumberNights = events.AcNumberNights,
                AcPreferHotel = events.AcPreferHotel,
                AcPreferHotelUrl = events.AcPreferHotelUrl,
                Flight = events.Flight,
                FlDeparture = events.FlDeparture,
                FlDepartPrefer = events.FlDepartPrefer,
                FlDepartPreferUrl = events.FlDepartPreferUrl,
                FlReturn = events.FlReturn,
                FlRetPrefer = events.FlRetPrefer,
                FlRetPreferUrl = events.FlRetPreferUrl,
                Notes = events.Notes,
                Files = events.Files,
                Status = events.Status
            };
            return CreatedAtRoute("DefaultApi", new { id = events.Id }, dto);
        }





而且我正在使用Postman来测试它...但是它不起作用......





And I'm using Postman to test it... but it's not working...

{
    "Message": "The request entity's media type 'multipart/form-data' is not supported for this resource.",
    "ExceptionMessage": "No MediaTypeFormatter is available to read an object of type 'Event' from content with media type 'multipart/form-data'.",
    "ExceptionType": "System.Net.Http.UnsupportedMediaTypeException",
    "StackTrace": "   at System.Net.Http.HttpContentExtensions.ReadAsAsync[T](HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n   at System.Net.Http.HttpContentExtensions.ReadAsAsync(HttpContent content, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)\r\n   at System.Web.Http.ModelBinding.FormatterParameterBinding.ReadContentAsync(HttpRequestMessage request, Type type, IEnumerable`1 formatters, IFormatterLogger formatterLogger, CancellationToken cancellationToken)"
}





它说明了这一点。 ..任何想法如何解决?



It says this... any idea how to fix it?

推荐答案

这可能会有所帮助: ASP.NET WebApi:MultipartDataMediaFormatter [ ^ ]
This might help: ASP.NET WebApi: MultipartDataMediaFormatter[^]


这篇关于如何让这个控制器接受不同类型的json?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆