Can someone explain to me why this doesn't work? I've read lots of posts about multiple submit buttons on one page, but I don't understand what's going on in the background. I've tried to follow what I see others doing in those posts, but none of it seems to work. I'm just trying to understand what is really going on here. I suspect it has something to do with what exactly happens when a page is posted.
Both buttons do a completely different thing. The first button posts the form. In the form's post code, it is then redirected to Vehicle/Index. The second button does not post the form, and goes directly to /Vehicle/CreateNewVehiclePart.
Here is what I want. I want both buttons to submit the form (so I can perform validation and save the changes to the Vehicle before moving on). Once the Vehicle data is saved, I want to move to /Vehicle/AddPartsToVehicle or /Vehicle/CreateNewVehiclePart based upon which button is clicked.
<table class="layouttable">
    <tr>
        <td>
            @using (Html.BeginForm("AddPartsToVehicle", "Vehicle", FormMethod.Post, null))
            {
                <input type="submit" value="Add Parts To Vehicle" />
            }
        </td>
        <td>
            @using (Html.BeginForm("CreateNewVehiclePart", "Vehicle", FormMethod.Post, null))
            {
                <input type="submit" value="Create New Vehicle Part" />
            }
        </td>
    </tr>
</table>
Here is the Vehicle model:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
namespace ShopLog.Models
{
    public class Vehicle
    {
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid VehicleID { get; set; }
    [Timestamp]
    public Byte[] Timestamp { get; set; }
    [Required]
    [Display(Name = "Vehicle Name")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string VehicleName { get; set; }
    [Display(Name = "Assigned To")]
    [MaxLength(30, ErrorMessage= "The {0} must be no more than {2} characters long.")]
    public string AssignedTo { get; set; }
    [Display(Name = "ID Number")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string IDNumber { get; set; }
    [Display(Name = "Active")]
    public bool Active { get; set; }
    [Display(Name = "Sign Out Vehicle")]
    public bool SignOutVehicle { get; set; }
    [Display(Name = "Have Title")]
    public bool HaveTitle { get; set; }
    [Display(Name = "Mileage or Hours")]
    public int? MileageOrHours { get; set; }
    [Display(Name = "Make")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string Make { get; set; }
    [Display(Name = "Model")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string Model { get; set; }
    [Display(Name = "Year")]
    public int? Year { get; set; }
    [Display(Name = "Engine")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string Engine { get; set; }
    [Display(Name = "Transmission Gears")]
    public int? TransmissionGears { get; set; }
    [Display(Name = "VIN")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string VIN { get; set; }
    [Display(Name = "Serial Number")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string SerialNumber { get; set; }
    [Display(Name = "Color")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string Color { get; set; }
    [Display(Name = "Air Filter")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string AirFilter { get; set; }
    [Display(Name = "Engine Oil Filter")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string EngineOilFilter { get; set; }
    [Display(Name = "Fuel Filter")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string FuelFilter { get; set; }
    [Display(Name = "Transmission Oil Filter")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string TransmissionOilFilter { get; set; }
    [Display(Name = "HydraulicOilFilter")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string HydraulicOilFilter { get; set; }
    [Display(Name = "Interior A/C Filter")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string InteriorACFilter { get; set; }
    [Display(Name = "Differential Oil")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string DifferentialOil { get; set; }
    [Display(Name = "Transmission Oil")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string TransmissionOil { get; set; }
    [Display(Name = "Engine Oil")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string EngineOil { get; set; }
    [Display(Name = "Tire Size")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string TireSize { get; set; }
    [Display(Name = "Tire Pressure")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string TirePressure { get; set; }
    [Display(Name = "Smog Due Date")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
    public DateTime? SmogDue { get; set; }
    [Display(Name = "Registration Due Date")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
    public DateTime? RegistrationDue { get; set; }
    [Display(Name = "Insurance Due Date")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
    public DateTime? InsuranceDue { get; set; }
    [Display(Name = "License Plate")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string LicensePlate { get; set; }
    [Display(Name = "Owner")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string Owner { get; set; }
    [Display(Name = "Previous Owner")]
    [MaxLength(30, ErrorMessage = "The {0} must be no more than {2} characters long.")]
    public string PreviousOwner { get; set; }
    [Display(Name = "Date Acquired")]
    [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:d}")]
    public DateTime? DateAcquired { get; set; }
    [Display(Name = "Notes")]
    [DataType(DataType.MultilineText)]
    public string Notes { get; set; }
    [Required(ErrorMessage="Vehicle Type is required.")]
    public Guid VehicleTypeID { get; set; }
    public Guid? TransmissionTypeID { get; set; }
    //A vehicle can only have one VehicleType and one TransmissionType
    [Display(Name = "Vehicle Type")]
    public virtual VehicleType VehicleType { get; set; }
    [Display(Name = "Transmission Type")]
    public virtual TransmissionType TransmissionType { get; set; }
    //A vehicle can have many Parts
    [Display(Name = "Parts")]
    public virtual ICollection<Part> Parts { get; set; }
    //A vehicle can have many Warranties
    [Display(Name = "Warranties")]
    public virtual ICollection<Warranty> Warranties {get; set; }
}
}
Here is the Part model:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.ComponentModel.DataAnnotations;
using System.Globalization;
namespace ShopLog.Models
{
    public class Part
    {
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public Guid PartID { get; set; }
    public string Name { get; set; }
    public decimal Cost { get; set; }
    [DataType(DataType.MultilineText)]
    public string Notes { get; set; }
    //A Part can belong to many Vehicles
    public virtual ICollection<Vehicle> Vehicles { get; set; }
    }
}
 
     
     
    