У меня есть частичное представление, которое содержит
@model List<Destination>
@for (var i = 0; i < Model.Count; i++)
{
@Html.HiddenFor(model => model[i].Id)
<div class="form-row">
<div class="form-group col-md-10">
<label>@Html.LabelFor(model => model[i].Path) ( @(i + 1) )</label>
<input type="text" value=@Model[i].Path/>
@Html.TextBoxFor(model => model[i].Path, new { @class = "form-control", required = "required" , title = "My custom error message")
@Html.ValidationMessageFor(model => model[i].Path)
</div>
<button class="btn btn-outline-danger" onclick="deleteField(event,
'@Model[i].Id');">
<i class="fas fa-trash-alt"></i>
</button>
}
Я добавил вход, который содержит значение @Model[i].Path
, потому что я получаю список, я могу добавлять и удалять его в списке.Если у меня есть список из 3 элементов, когда я удаляю index i=1
, он всегда удаляет последний индекс, поэтому он удаляет последний элемент.Чтобы проверить, правильно ли введен входной сигнал, я добавил вход и да, значение верное, но в textboxfor
значение не перезагружается и содержит старое значение.
Второй пункт даже для сообщения об ошибке, которое является нестандартным, для первого ввода списка оно не перезагружается, чтобы быть новым настраиваемым сообщением, для добавленных элементов в списке сообщение является настраиваемым.
Как я могу исправить эти две проблемы, и кажется, что что-то не так между сервером, который отправляет модель, и временем заполнения частичного представления.Все объекты правильные.
Редактировать: обновить частичное представление, пример удаления элемента
public ActionResult SupprimerChampDestination(Destinations model, int idToDelete)
{
model.Path.RemoveAll(elementToDelete => elementToDelete.Id == idToDelete);
ViewData.TemplateInfo.HtmlFieldPrefix = Constante.PrefixPartialViewDestination;
return PartialView(Vues.Paths.Destination, model.Path);
}
И JS:
function deleteField(event, clickedId) {
event.preventDefault();
var model = $("#Form").serialize();
debugger;
$.ajax({
type: 'POST',
url: '@Url.Action("SupprimerChampDestination", "PathsController")',
data: model + "&idToDelete=" + clickedId,
success: function (response) {
debugger;
console.log(response);
$("#destinationMultiple").html(response);
},
error: function(xhr, textStatus, error) {
console.log(xhr.statusText);
console.log(textStatus);
console.log(error);
}
});
}
$ ("#destinationMultiple ") - это div, содержащий частичное представление, в которое я загружаю результат.
Спасибо