Submitting A Form To Different Action Methods In ASP.NET MVC

There are different ways to indicate the action method to which we want to submit our form. I am going to explain these methods here. You can find the following working examples here.
 

Submit button inside the form (default behavior)

 
This is the most common scenario, we have one submit button inside the form. When we submit the form, it posts back to form’s submit action:
  1. @using (Html.BeginForm("Enroll""Home", FormMethod.Post))      
  2. {      
  3.     <div class="form-group">      
  4.         @Html.LabelFor(m => m.Name)      
  5.         @Html.TextBoxFor(model => model.Name, new {@class="form-control"})       
  6.     </div>      
  7.          
  8.     // form is postback to /Home/Enroll      
  9.     <input type="submit" value="Enroll" class="btn"/>      
  10. }  

Submit button outside the form

 
If your submit button is outside the form, you can use the form attribute to indicate the form that should be used for postback:
  1. @using (Html.BeginForm("Enroll""Home", FormMethod.Post, new { id = "myFrom" }))      
  2. {      
  3.     <div class="form-group">      
  4.         @Html.LabelFor(m => m.Name)      
  5.         @Html.TextBoxFor(model => model.Name, new {@class="form-control"})       
  6.     </div>      
  7. }    
  8.       
  9. // submit button is outside the form, it would postback to form's postback action: /Home/Enroll      
  10. <input type="submit" value="Enroll (outside)" form="myFrom" class="btn"/>  

Multiple submit buttons, posting back to different action methods

 
If you have more than one submit button and you want each button to postback to a different action, then use formaction attribute on your button:
  1. @using (Html.BeginForm("Enroll""Home", FormMethod.Post))      
  2. {      
  3.     <div class="form-group">      
  4.         @Html.LabelFor(m => m.Name)      
  5.         @Html.TextBoxFor(model => model.Name, new {@class="form-control"})       
  6.     </div>      
  7.           
  8.     // your main submit button will post back to: /Home/Enroll (default behavior)      
  9.     <input type = "submit" value="Enroll" class="btn"/>      
  10.     // your Delete button will post back to: /Home/Delete      
  11.     <input type = "submit" value="Delete" formaction="@Url.Action("Delete")" formmethod="post" class="btn" />