来自其他站点的示例:
在 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。