使用Untyped模型向WebAPI OData控制器提交表单

本文关键字:控制器 提交 表单 OData WebAPI Untyped 模型 使用 | 更新日期: 2023-09-27 18:06:33

我在我的edm中定义了一个未类型化的模型,如下所示:

<EntityType Name="Content">
  <Key>
    <PropertyRef Name="Id"/>
  </Key>
  <Property Name="Id" Type="Edm.Guid"/>
  <Property Name="Title" Type="Edm.String"/>
</EntityType>

当我尝试从html表单提交请求时,我的POST动作中的IEdmEntityObject为空。

public HttpResponseMessage Post(IEdmEntityObject entity)

这在json中工作得很好-实体充满了属性,但是odata反序列化器似乎不理解application/x-www-form-urlencoded mime-type

<form method="POST" action="http://localhost/api/odata/content">
    Title:<br>
    <input type="text" name="Title" value="Mouse">
    <br>
    <input type="submit" value="Submit">
</form> 

使用Untyped模型向WebAPI OData控制器提交表单

是的,WebApi OData不支持这种格式,您可以查看代码https://github.com/OData/WebApi/blob/master/OData/src/System.Web.OData/OData/Formatter/ODataMediaTypeFormatters.cs和规范http://docs.oasis-open.org/odata/odata-json-format/v4.0/odata-json-format-v4.0.html

或者你可以自定义格式化器,这可能很难,但任何进一步的问题或请求可以在github中打开问题https://github.com/OData/WebApi