Рейтинг:
1
F-ES Sitecore
Несколько проблем, прежде всего http и формы работали нормально задолго до того, как был изобретен js, вам не нужно, чтобы js выполнял базовый http, например отправлял данные формы в действие. Далее вы дублируете идентификаторы, а идентификаторы должны быть уникальными; их дублирование может привести к неожиданному поведению. Кроме того, идентификаторы используются только для js, css и т. д., Они не представляются с формой, для этого вам нужно "имя".
Самое простое решение вашей проблемы-изменить ваши идентификаторы на имена и изменить целевое действие
<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)
{
// you'll probably want some validation that all arrays are the same length
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();
}
Обновление
Ниже приведены два divs (я жестко закодировал их для простоты) внутри формы, которая затем отправляется через ajax и сериализацию
<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>
Метод контроллера такой же, как и выше
kkakadiya
Я делаю AJAX-вызов вместо отправки формы.
F-ES Sitecore
Сериализуйте значения формы и используйте их в качестве данных, google "jQuery serialise form data", у него есть довольно простые методы для этого.
kkakadiya
У меня есть уникальные идентификаторы,так как я даю индекс Id. ex: txtVehicleYear-1,txtVehicleYear-2, -3 и т. д., И это для каждого текстового поля и выпадающего списка.
Новый код кнопки автомобиля
var id = 0;
$("#btnAddVehicle"). click (функция () {
$(".NewVehicle"). clone (). attr ('id', 'dv -' + (id += 1)).addClass('addVechicle').insertAfter('.NewVehicle').removeClass("NewVehicle").appendTo("#dvNewVehicle");
$(".addVechicle"). css ("display", " inline");
$(".addVechicle").найти('#btnClearVehicle').буква attr('идентификатор', 'btnClearVehicle-' + ИД).буква attr('onclick функции', 'RemoveAddVehicle(' + ИД + ')');
$(".addVechicle").найти('#txtVehicleYear').буква attr('идентификатор', 'txtVehicleYear-' + ИД);
$(".addVechicle").найти('#txtVehicleMake').буква attr('идентификатор', 'txtVehicleMake-' + ИД);
$(".addVechicle").найти('#txtVehicleModel').буква attr('идентификатор', 'txtVehicleModel-' + ИД);
$(".addVechicle").найти('#ddlNewVehicleType').буква attr('идентификатор', 'ddlNewVehicleType-' + ИД).буква attr('имя', 'ddlNewVehicleType-' + ИД);
});
F-ES Sitecore
Вы можете сохранить удостоверения личности, это не проблема, просто убедитесь, что у них одно и то же имя.
Кроме того, вы уже видите, сколько этой информации не было в вашем первоначальном вопросе? Чтобы получить более точные ответы, вы должны заранее предоставить всю необходимую информацию.
kkakadiya
извините за это, я опубликовал то, что является ядром вопроса.
kkakadiya
Сериализация работает только на моем первом Div. что делать, если у меня есть более одного div? Он не работает на моем другом div.
F-ES Sitecore
Я обновил свое решение, включив в него отправку ajax