jbrunken
jbrunken

Reputation: 294

AJAX.BeginForm PostURL being corrupted

I'm experiencing a strange problem while trying to use the Ajax.BeginForm method of ASP.NET MVC3. The form renders properly on the page with the correct action attribute. However, when the form is submitted, the "OnFailure" event is returning a "Not Found" 404 error.

If I watch the request with fiddler, I see that the post URL is "/[Object NodeList]" which is obviously invalid.

My Razor code is as follows:

@using (Ajax.BeginForm("Save", "Items", new AjaxOptions { UpdateTargetId = "itemContainer", InsertionMode = InsertionMode.Replace, OnFailure = "onFailure"}))
{
    <div style="position:absolute; bottom:20px; left:200px;">
        <button type="submit" id="Save" name="action" value="Save">Save</button>
        <button type="submit" id="Cancel" name="action" value="Cancel">Cancel</button>
    </div>
}

Upvotes: 9

Views: 851

Answers (2)

jbrunken
jbrunken

Reputation: 294

The problem was using "action" for the name attribute on the submit buttons. As soon as I changed the name attribute to a different value, everything started working perfectly.

I'm guessing that there is a jQuery selector in the unobtrusive ajax library that got confused.

Upvotes: 13

Adam Tuliper
Adam Tuliper

Reputation: 30152

Do you have unobtrusive JavaScript on or off in your web.config? Im first guessing here the ms Ajax library is acting goofy so enable unobtrusive so we get jquery support.

What is your form action set to? Post your form HTML element if you can .

Upvotes: 0

Related Questions