Отправить идентификатор из представления в вызове AJAX asp.net mvc

#jquery #asp.net #ajax #asp.net-mvc #asp.net-core

Вопрос:

У меня есть эта таблица данных :

 lt;table id="files" class="table table-striped"gt;  lt;theadgt;  lt;trgt;  lt;thgt;Thumbnaillt;/thgt;  lt;thgt;Namelt;/thgt;  lt;thgt;Number of downloadslt;/thgt;  lt;thgt;Genrelt;/thgt;  lt;thgt;File Typelt;/thgt;  lt;thgt;Published Onlt;/thgt;  lt;thgt;Created Onlt;/thgt;  lt;thgt;Authorlt;/thgt;  lt;thgt;Actionslt;/thgt;  lt;/trgt;  lt;/theadgt;  lt;tbodygt;  @foreach (var file in Model.Files)  {  var thumbPath = "~/Thumbnails/"   file.ThumbnailPath;  lt;trgt;   lt;tdgt;lt;img style="width:80px;height:80px;" src="@thumbPath" asp-append-version="true" /gt;lt;/tdgt;  lt;tdgt;lt;a asp-controller="files" asp-action="details" asp-route-id="@file.Id" class="text-dark"gt;@file.Namelt;/agt;lt;/tdgt;  lt;td id="downloads"gt;@file.DownloadCounterlt;/tdgt;  lt;tdgt;@file.Genre.GenreNamelt;/tdgt;  lt;tdgt;@file.FileT.FileTypeNamelt;/tdgt;  lt;tdgt;@file.PublishedOnlt;/tdgt;  lt;tdgt;@file.Yearlt;/tdgt;  lt;tdgt;@file.Authorlt;/tdgt;  lt;tdgt;  lt;a asp-controller="files" asp-action="QrCode" asp-route-id="@file.Id" class="btn btn-primary"gt;Qr Codelt;/agt;  lt;a asp-controller="files" asp-action="EditFile" asp-route-id="@file.Id" class="btn btn-primary"gt;Editlt;/agt;  lt;/tdgt;  lt;td style="display:none;" id="fileId"gt;@file.Idlt;/tdgt;  lt;/trgt;    }  lt;/tbodygt;  lt;/tablegt; }  

я хочу отправить файл.Идентификатор для каждого файла в модели.Файлы в этом вызове ajax :

 lt;scriptgt;  $(document).ready(function () {  $('#dateto').change(function () {  var DateFrom = $('#datefrom').val();  var DateTo = $('#dateto').val();  var fileId = $('#fileId').val();    $.ajax({  type: 'GET',  url: "Home/NumberDownloads/?dateFrom="   DateFrom   "amp;dateTo="   DateTo   "amp;fileId= "  fileId,  success: function (data) {  console.log(data);  },  error: function (error) {  console.log(error);  }   });    });  }); lt;/scriptgt;  

Таким образом,это не работает, fileId всегда равен 0, все остальное работает, но мне нужна ваша помощь в отправке fileId в вызове для каждого файла в файле Models.File.

Комментарии:

1. Вы дублируете идентификаторы, и это нехорошо, так как идентификатор должен быть уникальным. Если у вас есть несколько элементов с одинаковым идентификатором fileId , то $('#fileId') будет возвращен только первый элемент

2. Можете ли вы показать, пожалуйста, откуда «#дата «»#дата»? У вас есть файл 100s. Удостоверение личности, но никаких дат

3. даты-это не проблема,они из 2-х списков даты в этом представлении, но я не публикую их, потому что они работают, но моей функции в бэкэнде требуется идентификатор каждого файла в моделях. Файл

4. Вы должны опубликовать все , что вы опубликовали, не имеет никакого смысла

5. вы сможете понять меня лучше, если увидите ответ…

Ответ №1:

 lt;scriptgt;  $(document).ready(function () {  $('#dateto').change(function () {  var DateFrom = $('#datefrom').val();  var DateTo = $('#dateto').val();  var fileId = $('#fileId').html();    $.ajax({  type: 'GET',  url: "Home/NumberDownloads/?dateFrom="   DateFrom   "amp;dateTo="   DateTo   "amp;fileId= "   fileId,  success: function (data) {  $('#downloads').empty();  $('#downloads').append(data);  console.log(data);  },  error: function (error) {  console.log(error);  }  });  });  });  lt;/scriptgt;  

С помощью этого я достигаю того, чего хочу, но только для первого элемента Model.Files .

Я хочу повторить этот вызов Ajax для всех элементов Model.Files или, проще говоря, вызвать этот Ajax для каждой итерации цикла foreach.