A few issues, first of all http and forms worked fine long before js was invented, you don't need js to do basic http like submit form data to an action. Next you are duplicating ids and ids need to be unique; duplicating them can lead to unexpected behaviours. Also ids are only used for js, css etc, they are not submitted with a form, you need a "name" for that.
Simplest solution to your problem is to change your ids to names and amend the target action
<div class="col-md-12 m-t-5 NewVehicle">
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
<div class="form-group">
<label for="VehicleYear">Year/Make</label><span class="text-danger">*</span>
<div style="display:flex;">
<input class="form-control m-r-5" name="txtVehicleYear" type="text" />
<input class="form-control" name="txtVehicleMake" type="text">
</div>
</div>
<div class="form-group">
<label for="VehicleModel">Model</label><span class="text-danger">*</span>
<input class="form-control" name="txtVehicleModel" type="text">
</div>
<div class="form-group">
<label for="VehicleType">Vehicle Type</label><span class="text-danger">*</span>
<select name="ddlNewVehicleType">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
</div>
</div>
[HttpPost]
public ActionResult Index(string[] txtVehicleYear, string[] txtVehicleMake, string[] txtVehicleModel, string[] ddlNewVehicleType)
{
for (int i = 0; i < txtVehicleYear.Length; i++)
{
string year = txtVehicleYear[i];
string make = txtVehicleMake[i];
string model = txtVehicleModel[i];
string type = ddlNewVehicleType[i];
}
return View();
}
Update
Below are two divs (I've hard-coded them for simplicity) inside a form that is then submitted via ajax and serialisation
<form id="myForm">
<div class="col-md-12 m-t-5 NewVehicle">
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
<div class="form-group">
<label for="VehicleYear">Year/Make</label><span class="text-danger">*</span>
<div style="display:flex;">
<input class="form-control m-r-5" name="txtVehicleYear" type="text" />
<input class="form-control" name="txtVehicleMake" type="text">
</div>
</div>
<div class="form-group">
<label for="VehicleModel">Model</label><span class="text-danger">*</span>
<input class="form-control" name="txtVehicleModel" type="text">
</div>
<div class="form-group">
<label for="VehicleType">Vehicle Type</label><span class="text-danger">*</span>
<select name="ddlNewVehicleType">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
</div>
</div>
<div class="col-md-12 m-t-5 NewVehicle">
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
<div class="form-group">
<label for="VehicleYear">Year/Make</label><span class="text-danger">*</span>
<div style="display:flex;">
<input class="form-control m-r-5" name="txtVehicleYear" type="text" />
<input class="form-control" name="txtVehicleMake" type="text">
</div>
</div>
<div class="form-group">
<label for="VehicleModel">Model</label><span class="text-danger">*</span>
<input class="form-control" name="txtVehicleModel" type="text">
</div>
<div class="form-group">
<label for="VehicleType">Vehicle Type</label><span class="text-danger">*</span>
<select name="ddlNewVehicleType">
<option value="1">One</option>
<option value="2">Two</option>
<option value="3">Three</option>
</select>
</div>
</div>
<div class="col-lg-4 col-md-4 col-sm-4 col-xs-4">
</div>
</div>
</form>
<input value="Click" type="button" onclick="submit()"/>
<script>
function submit() {
$.ajax({
method: 'POST',
url: '@Url.Action("Index", "Home")',
data: $("#myForm").serialize()
});
}
</script>
The controller method is the same as above