MVC Ajax.ActionLink doesn't find POST method

fearofawhackplanet picture fearofawhackplanet · Jun 14, 2010 · Viewed 10.3k times · Source

I have a POST method declared in my controller:

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult UpdateComments(int id, string comments)
{
    // ... 
}

and an ActionLink in my view:

<%= Ajax.ActionLink("update", "UpdateComments", 
                        new { id = Model.Id, comments = "test" }, 
                        new AjaxOptions { 
                                HttpMethod="POST", 
                                OnFailure="alert('fail');", 
                                OnSuccess = "alert('success');" 
                            })%>

I get a "not found" error when it tries to route this request.

If I remove the POST restriction from the UpdateComments method in the controller, it works fine.

What am I missing?

Answer

fearofawhackplanet picture fearofawhackplanet · Jun 14, 2010

It seems it didn't like the way I was declaring my OnFailure and OnSuccess callbacks. I guess it couldn't parse my AjaxOptions object so was ignoring the HttpMethod="POST" setting.

I got it working by changing it to:

OnFailure="function() { alert('fail'); }",
OnSuccess="function() { alert('success'); }"