Из примера на другом сайте: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>();
В ContactTypeController
[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
Я не понимаю, как мы получаем Id = 5 из ContactType в акции и сохранить что-то в базу данных с помощью этого идентификатора при использовании ..odata/ContactType (5) /Default.ChangePersonStatus ссылка
Я протестировал эти ссылки в браузере, и оба они перешли к действию, которое я написал. Означает ли это, что (5) опущено из URL-адреса для объекта? –