Вот действие, которое устанавливает изображения в ViewBag
для отображения.
public ActionResult UploadPhoto()
{
List images = new List();
foreach (var file in Directory.GetFiles(AlbumManager.GetAlbumName(SessionManager.CurrentSession.PropertyId, true)))
{
images.Add(Server.RelativePath(file));
}
ViewBag.Images = images;
return PartialView("UploadPhoto");
}
Вот сообщение, которое используется для удаления выбранного изображения.
[HttpPost]
public ActionResult DeletePhoto(string imageName)
{
AlbumManager.DeletePhoto(SessionManager.CurrentSession.PropertyId, imageName);
return UploadPhoto();
}
Как вы можете видеть, после завершения удаления я перенаправляю его на действие UploadPhoto
, которое должно печатать текущие изображения. Но после обратной записи удаленное изображение все еще отображается. Я очень не уверен в этом поведении. Пожалуйста, помогите мне решить эту проблему.
Я попытался очистить состояние модели в DeletePhoto
с помощью следующего кода, но не использовать.
ModelState.Clear();
Мой взгляд:
@using (Html.BeginForm("DeletePhoto", "Add", FormMethod.Post, new { id = "PhotoDelete" }))
{
<input type="hidden" name="imageName" id="imageName" />
<div class="thumnailsBox">
@foreach (var image in ViewBag.Images)
{
<div class="thumnailTails">
<input id="imageSubmit" type="image" alt="No Image" src="@Url.Content(image)" />
</div>
}
</div>
}
<Сильный> Решение:
В дополнение к ответу IronMan84 , вот фактическое решение моей проблемы:
[HttpPost]
public ActionResult DeletePhoto(string imageName)
{
AlbumManager.DeletePhoto(SessionManager.CurrentSession.PropertyId, imageName);
return JavaScript("location.reload(true)");
}
Я предоставляю сценарий для перезагрузки страницы здесь.