こんにちは、サーバーに保存されている写真を削除し、データベースから情報を削除するリンクを作成しようとしています。リンクをajaxで投稿したい。私はすべてを試しましたが、うまくいきません。
ただし、削除以外のことをしようとしている場合は機能します-たとえば、データベースのフィールドを更新します。
私が間違っているのは何ですか?
意見:
<div class="uploaded-property-pics clearfix">
<ul>
@foreach (var item in Model.PropertyPhotos) {
<li>
<img src="@Url.Content("~/PropertyImages/" + item.PropertyId + "/" + "tn_" + item.PhotoLocation + ".png")"/>
<a href="/Property/DeletePhoto/@item.PropertyPhotosId" class="photo-delete-link">Delete</a>
</li>
}
</ul>
</div>
JQuery:
<script>
$('.photo-delete-link').click(function (e) {
$.ajax({
url: this.href,
dataType: "text json",
type: "POST",
data: {},
success: function (data, textStatus) { }
});
e.preventDefault();
});
</script>
コントローラ:
[HttpPost]
[Authorize]
public void DeletePhoto(int id)
{
var photo = websiteRepository.GetPhotoByPhotoId(id);
var folder = Server.MapPath("~/PropertyImages/" + photo.PropertyId + "/");
if (!Directory.Exists(folder))
{
var filePath = folder + photo.PhotoLocation + ".png";
var thumbPath = folder + "tn_" + photo.PhotoLocation + ".png";
websiteRepository.DeletePhotoFromServer(filePath);
websiteRepository.DeletePhotoFromServer(thumbPath);
}
websiteRepository.DeletePhotoFromDb(photo);
}
データアクセス:
public void DeletePhotoFromDb(PropertyPhotos photo)
{
db.PropertyPhotos.Remove(photo);
}
public void DeletePhotoFromServer(string filePath)
{
File.Delete(filePath);
}