Web api mvc传入的XML根目录不同

Web api mvc传入的XML根目录不同,xml,asp.net-mvc,Xml,Asp.net Mvc,我需要开发一个web api MVC REST服务来使用来自第三方的XML 该项目是使用基于示例XML文件的CodeFirst实体框架创建的 我收到了更新、发布和删除的测试XML文件,让我惊讶的是,每个方法的根XML元素都不同 POST根是CreateSomething PUT根目录正在更新 在我创建的模型中,对于所有方法,根总是CreateSomething 我需要为不同的方法创建额外的模型吗?还是有别的办法来解决这个问题 希望我把问题说清楚 提前谢谢 问候 编辑: 这是预期的XML输入,适用

我需要开发一个web api MVC REST服务来使用来自第三方的XML

该项目是使用基于示例XML文件的CodeFirst实体框架创建的

我收到了更新、发布和删除的测试XML文件,让我惊讶的是,每个方法的根XML元素都不同

POST根是CreateSomething

PUT根目录正在更新

在我创建的模型中,对于所有方法,根总是CreateSomething

我需要为不同的方法创建额外的模型吗?还是有别的办法来解决这个问题

希望我把问题说清楚

提前谢谢

问候

编辑: 这是预期的XML输入,适用于POST

<CreateBookingRequest xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <ID>a10601e4-c24d-4e7d-9c11-ae5a35fb5770</ID>
  <ApiKey>sample string 2</ApiKey>
  <Booking>
<BookingId>22c9a3ce-58d1-4a7e-b483-897e29aa3f6a</BookingId>
<Travellers>      
  <Traveller Id="8">
    <TravellerId>0792a822-92d0-4e9a-88b2-f6fae02221f2</TravellerId>
    <DateOfBirth>2016-04-13T11:56:02.4407937+02:00</DateOfBirth>
    <Gender>sample string 3</Gender>
    <FirstName>sample string 4</FirstName>
    <LastName>sample string 5</LastName>
    <CountryCode>sample string 6</CountryCode>
    <PrefferedLanguageCode>sample string 7</PrefferedLanguageCode>
    <Communication>
      <CommunicationId>fbf1eeda-73bf-4381-a751-5a2da346e7a0</CommunicationId>
      <Email>
        <EmailId>45069245-c2af-4c55-934f-e033da0fbb5e</EmailId>
        <Value>sample string 2</Value>
        <Culture>sample string 3</Culture>
      </Email>
      <Sms>
        <SmsId>261db3a9-d858-47e9-934b-07981d203155</SmsId>
        <Value>sample string 2</Value>
        <Culture>sample string 3</Culture>
      </Sms>
      <EmailId>6a4005d4-8f05-4999-9098-1078b2c12ebf</EmailId>
      <SmsId>d5d8f3df-b08c-4954-9e6c-b29a3a74a3e8</SmsId>
    </Communication>
    <BookingId>4baf0cad-75d8-4067-a3d1-bd70f1b219ad</BookingId>
  </Traveller>
</Travellers>    
  </Booking>
</CreateBookingRequest>

我不确定我是否完全理解你的要求

下面是一个类,它将作为模型的基础

public abstract class RequestModelBase {
    //All the properties that are common to your models
}
然后为从公共基继承的不同模型创建类

public class UpdateBookingRequest : RequestModelBase {...}

public class CreateBookingRequest : RequestModelBase {...}
根据您的评论更新这里是一个示例控制器

[RoutePrefix("api/bookings")]
public class BookingsController: ApiController {

    // POST: api/Bookings  
    [HttpPost]      
    [Route("")]
    public IHttpActionResult PostBooking(CreateBookingRequest request) {...}

    // PUT: api/Bookings/a10601e4-c24d-4e7d-9c11-ae5a35fb5770  
    [HttpPut]      
    [Route("{id:guid}")]
    [ResponseType(typeof(void))]
    public IHttpActionResult PutBooking(Guid id, UpdateBookingRequest request) {...}

    // DELETE: api/Bookings/a10601e4-c24d-4e7d-9c11-ae5a35fb5770  
    [HttpDelete]      
    [Route("{id:guid}")]
    public IHttpActionResult DeleteBooking(Guid id) {...}
}

我不确定我是否完全理解你的要求

下面是一个类,它将作为模型的基础

public abstract class RequestModelBase {
    //All the properties that are common to your models
}
然后为从公共基继承的不同模型创建类

public class UpdateBookingRequest : RequestModelBase {...}

public class CreateBookingRequest : RequestModelBase {...}
根据您的评论更新这里是一个示例控制器

[RoutePrefix("api/bookings")]
public class BookingsController: ApiController {

    // POST: api/Bookings  
    [HttpPost]      
    [Route("")]
    public IHttpActionResult PostBooking(CreateBookingRequest request) {...}

    // PUT: api/Bookings/a10601e4-c24d-4e7d-9c11-ae5a35fb5770  
    [HttpPut]      
    [Route("{id:guid}")]
    [ResponseType(typeof(void))]
    public IHttpActionResult PutBooking(Guid id, UpdateBookingRequest request) {...}

    // DELETE: api/Bookings/a10601e4-c24d-4e7d-9c11-ae5a35fb5770  
    [HttpDelete]      
    [Route("{id:guid}")]
    public IHttpActionResult DeleteBooking(Guid id) {...}
}


您能否展示一些代码,以便更好地了解您所做的工作,并允许其他人尝试重新创建您的问题并提供解决方案?您好,添加了更多信息。感谢展示处理xml的方法的示例代码。不清楚您的问题是什么。您好,添加了PUT方法的示例代码。我想我对您的要求有了更清楚的了解。您能否显示一些代码,以便更好地了解您所做的工作,并允许其他人尝试重新创建您的问题并提供解决方案您好,添加了更多信息。感谢展示处理xml的方法的示例代码。不清楚您的问题是什么。您好,添加了PUT方法的示例代码。我想我对您的问题有了更清楚的了解。我想这就是我要找的!我会尝试一下,让yopu知道它是否有效。谢谢除了已经存在的CreateBookingRequestController之外,我还需要添加另一个控制器吗?不,您应该能够将所有操作放入一个控制器中。类似于
BookingsController
,操作类似于
createbooking
UpdateBooking
。注意到您的示例代码中缺少PUT action上的
[httpputtribute]
,谢谢!如果这个答案对你有帮助,请随意投票。谢谢,我想这就是我要找的!我会尝试一下,让yopu知道它是否有效。谢谢除了已经存在的CreateBookingRequestController之外,我还需要添加另一个控制器吗?不,您应该能够将所有操作放入一个控制器中。类似于
BookingsController
,操作类似于
createbooking
UpdateBooking
。注意到您的示例代码中缺少PUT action上的
[httpputtribute]
,谢谢!如果这个答案对你有帮助,请随意投票。谢谢