OData 路由和操作



来自其他站点的示例:

在 WebApiConfig 中.cs

EntitySetConfiguration<ContactType> contactType = builder.EntitySet<ContactType>("ContactType");
var actionY = contactType.EntityType.Action("ChangePersonStatus");
actionY.Parameter<string>("Level");
actionY.Returns<bool>();
var changePersonStatusAction = contactType.EntityType.Collection.Action("ChangePersonStatus");
changePersonStatusAction.Parameter<string>("Level");
changePersonStatusAction.Returns<bool>();

在接触类型控制器中

[HttpPost]
[ODataRoute("Default.ChangePersonStatus")]
public IHttpActionResult ChangePersonStatus(ODataActionParameters parameters)
{
  if (ModelState.IsValid)
  {
   var level = parameters["Level"];
   // SAVE THIS TO THE DATABASE OR WHATEVER....
   }
   return Ok(true);
}

现在可以调用该操作:

For the Entity:
http://localhost:51902/odata/ContactType(5)/Default.ChangePersonStatus
For the Entity Collection:
http://localhost:51902/odata/ContactType/Default.ChangePersonStatus

我不明白我们如何在操作中检索 ContactType 的 Id = 5 并在使用时通过此 ID 将某些内容保存到数据库中。odata/ContactType(5)/Default.ChangePersonStatus link

对于实体集合:

http://localhost:51902/odata/ContactType/Default.ChangePersonStatus

控制器中的方法应如下所示:

[HttpPost]
[ODataRoute("ContactType/Default.ChangePersonStatus")]
public IHttpActionResult ChangePersonStatus(ODataActionParameters parameters)
{
  ...
}

对于实体:

http://localhost:51902/odata/ContactType(5)/Default.ChangePersonStatus

控制器中的方法应如下所示:

[HttpPost]
[ODataRoute("ContactType({key})/Default.ChangePersonStatus")]
public IHttpActionResult ChangePersonStatus(int key, ODataActionParameters parameters)
{
  ...
}

的值为 5;

若要引用单个实体,需要在键之前包含 [FromODataUri]:

[HttpPost]
[ODataRoute("ContactType({key})/Default.ChangePersonStatus")]
public IHttpActionResult ChangePersonStatus([FromODataUri] int key, ODataActionParameters parameters)
{
  // Code
}

您现在应该能够在该方法中访问您的 ID。

最新更新