Simple poste de Web Api

Que j'essaie de faire une requête post à travailler avec l'api web. Voici mon api contrôleur.

public class WebsController : ApiController
{
    [HttpPost]
    public void PostOne(string id)
    {
    }

    [HttpPost]
    public void PostTwo(Temp id)
    {
    }
}

J'ai modifié la webapi route à prendre les mesures en compte. le Temp modèle de ressembler à quelque chose comme ça.

public class Temp
{
    public string Id { get; set; }
}

mon point de vue ressembler à quelque chose comme ceci

@using (Ajax.BeginForm(new AjaxOptions
{
    Url = "/api/webs/postone",
    HttpMethod = "post"
}))
{
    <input name="id" id="id" value="2" />
    <input type="submit" value="submit" />
}

le code ci-dessus ne fonctionne pas du tout avec le postone, à moins que j'ai mis le [FromBody] attribut en face du paramètre comme ceci.

[HttpPost]
public void PostOne([FromBody]string id)
{
}

puis il frappe de l'action, mais l'id est toujours null. Il n'est pas renseignée avec la valeur dans la zone de texte.

Mais, si je change le Url de la Ajax.BeginForm à posttwo qui prennent le modèle Temp, il fonctionne très bien et les Id champ obtient la valeur appropriée dans la zone de texte.

quelqu'un peut-il svp m'expliquer la raison pour que cela se produise et comment je peux poster une simple valeur d'une api web d'action? Je veux dire, pourquoi ne peut-il se lier à un type complexe, mais pas un type simple.

  • ouais, je sais. Il a juste perdu la moitié de ma journée de travail juste à savoir que peu d'indices de ne pas donner un nom pour le paramètre dans l'ajax de jQuery.
  • Hmm... où sont tous les commentaires?
  • C'est un peu étrange... peut avoir de rapport et de voir ce qui n'allait pas. Est-il possible que les utilisateurs ont été supprimés et indirectement supprimé les commentaires?
InformationsquelleAutor Amila | 2013-09-30