Я пытаюсь получить почтовый запрос для работы с веб-api. Ниже приведен мой контроллер api.
public class WebsController : ApiController
{
[HttpPost]
public void PostOne(string id)
{
}
[HttpPost]
public void PostTwo(Temp id)
{
}
}
Я изменил маршрут webapi, чтобы принять во внимание действие. модель Temp выглядит примерно так.
public class Temp
{
public string Id { get; set; }
}
мой взгляд выглядит примерно так.
@using (Ajax.BeginForm(new AjaxOptions
{
Url = "/api/webs/postone",
HttpMethod = "post"
}))
{
<input name="id" id="id" value="2" />
<input type="submit" value="submit" />
}
вышеуказанный код вообще не работает с postone, если я не поставлю атрибут [FromBody] перед параметром, подобным этому.
[HttpPost]
public void PostOne([FromBody]string id)
{
}
то он обращается к действию, но идентификатор по-прежнему равен нулю. Он не заполняется значением в текстовом поле.
Но если я изменил Url
от Ajax.BeginForm
до posttwo
, который возьмет модель Temp
, он будет хорошо работать, а поле Id
получит правильное значение в текстовом поле.
Может ли кто-нибудь объяснить мне причину этого и как я могу опубликовать простое значение для действия веб-api? Я имею в виду, почему он может связывать сложный тип, но не простой тип.