В моем приложении MVC 4 частичный просмотр не обновляется после операции удаления. Мой частичный вид, как показано нижеЧастичный просмотр не обновляется после Jquery delete
@model IEnumerable<SFRS.DataMarketPlace.Data.Dataset_Files>
@using Microsoft.Web.Helpers;
@{ int datasetId = 0;}
@foreach (var item in Model)
{
datasetId = item.DatasetID;
<div class="FileLinkBox clearfix)">
<a class="FileLink FileLinkColor" href="@Href("/files")/dataset/@item.FilePath">@item.FilePath</a>
</div>
<div class="deleteFileLink"><a class="removeFile" href="#" data-id="@item.ID">(Delete File)</a> </div>
}
@FileUpload.GetHtml(initialNumberOfFiles: 1, allowMoreFilesToBeAdded: true, includeFormTag: false, addText: " Add more files")
<a href="#" onclick="removeFile(); return false;">Remove last file</a>
<script type="text/javascript">
$('.removeFile').click(function() {
var fileid = $(this).attr('data-id');
var answer = confirm ("Are you sure you want to delete this file?");
if (answer) {
$.ajax({
type: 'POST',
url: '@Url.Action("RemoveDatasetFile", "Dataset")',
data: { id: fileid, datasetId: @datasetId }
})
.success(function(result) {
})
.error(function(xhr, status) {
alert(status);
});
}
});
Операция удаления делает работу и при обновлении страницы я вижу, файл удален. И смотри ниже, как я называю это частичный вид на главном экране
<div class="col-sm-8">
@Html.Partial("_DatasetFiles", @Model.Dataset_Files)
</div>
Метод, который обрабатывает эти запросы, как показано ниже
[HttpPost]
public virtual PartialViewResult RemoveDatasetFile(int id,int datasetId)
{
this.UnitOfWork.DatasetRepository.RemoveDatasetFileByDatasetIdAndId(id,datasetId);
this.UnitOfWork.SaveChanges();
var revisedDatasetFiles = this.UnitOfWork.DatasetRepository.GetDatasetFilesByDatasetId(datasetId);
return PartialView("_DatasetFiles", revisedDatasetFiles);
}
Исправьте меня, если я ошибаюсь. Вы вызываете запрос AJAX для удаления файла и возвращаете обновленный вид. Но вы не делаете никаких попыток в методе Успеха обратного вызова AJAX. Здесь вы должны написать код, который отобразит возвращаемый ответ HTML в целевой DIV. –
Поскольку @KD предлагает, если вы ничего не вернетесь в обратном вызове метода ajax, ничего не произойдет. Попытайтесь сделать перерыв в файле RemoveDatasetFile PartialViewResult. Если операция выполнена успешно, в обратном вызове успеха вы должны снова вызвать свой частичный просмотр (я предпочитаю RenderAction вместо Partial, потому что вы можете обрабатывать другие действия, а затем возвращать частичное представление) –