我需要创建一个终点,但是这个终点可以有多种类型的输入,表单本身可以根据配置进行更改,所以我试图创建至少2个对象作为可能的输入。
类似的东西:
public class ParticipationsController : ApiController
{
public HttpResponseMessage Post([FromBody]Models.SimpleParticipationModel sModel, [FromBody]Models.CompleteParticipationModel cModel)
{
if (!ModelState.IsValid) // this might not be this way here
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
return Request.CreateResponse(HttpStatusCode.OK, "Ok");
}
我的观点是避免使用多个端点并在页面中更改大量渲染。
我的对象包含DataAnotations以遵守某些规则,例如“Required”和“Range 0-X”。
我也没有拥有所有属性的对象,只能完成其中的一些。
提前致谢
答案 0 :(得分:1)
这可能是不可能的。为每个对象创建两个端点或创建包含上述两个对象的对象。
例如,在这里,您可以在API操作中传递ViewModel的对象,该操作基本上包括两个对象。这还将维护对象属性的数据注释行为。
public class ViewModel
{
SimpleParticipationModel sModel {get;set;}
CompleteParticipationModel cModel {get;set;}
}
public class ParticipationsController : ApiController
{
public HttpResponseMessage Post([FromBody]ViewModel)
{
if (!ModelState.IsValid) // this might not be this way here
{
return Request.CreateResponse(HttpStatusCode.BadRequest);
}
return Request.CreateResponse(HttpStatusCode.OK, "Ok");
}