MVC submit button not firing

It turns out that jQuery was stopping the ActionResult from being hit.

I had a button click event which was "eating up" the ActionResult functionality. I solved this by calling my ActionResult using Ajax.


You dont need to use "-Controller" suffix. Use just Home instead of HomeController, MVC will convert it for you.

Use

@using (Html.BeginForm("SubmitForm", "Home", FormMethod.Post, new { id = "submitForm" }))

instead of

@using (Html.BeginForm("SubmitForm", "HomeController", FormMethod.Post, new { id = "submitForm" }))

Full codes

view

@using (Html.BeginForm("SubmitForm", "Home", FormMethod.Post, new { id = "submitForm" }))
{
      <div class="main-Background">

          ******lots of other html here*******
          <input type="submit" id="btnSave">Save</input>

    </div>
}

And controller

[HttpPost]
public ActionResult SubmitForm()
{
    return View();
}

View:

@using (Html.BeginForm("SubmitForm", "Home", FormMethod.Post))
{
  <div class="main-Background">
    ******lots of other html here*******
    <button type="submit" id="btnSave">Save</button>

  </div>
}

Controller:

[HttpPost]
public ActionResult SubmitForm()
{
    return View();
}

May be the problem is occurred because of other HTML inside your div so check it out. Otherwise it works perfectly.


You need to add Html.BeginForm with the parameters. Here is an example:

ActionName – Name of the Action. In this case the name is Create.

ControllerName – Name of the Controller. In this case the name is Home.

FormMethod – It specifies the Form Method i.e. GET or POST. In this case it will be set to POST.

http://localhost:60386//Home/Create


@using (Html.BeginForm("Create", "Home", FormMethod.Post))
{
  @Html.EditorFor(model => model.FirstName)

  <input type="submit" value="Create"/>
}


HomeController.cs:
        [HttpPost]
        public ActionResult Create(Person person)
        {

            if (ModelState.IsValid)
            {
                db.Persons.Add(person);
                db.SaveChanges();
                return RedirectToAction("Create");
            }

            return View(person);
        }