Jquery Ajax Post删除服务器+ asp.net上的文件mvc + c#

嗨,我一直在试图创建一个链接,删除存储在服务器上的图片,并从数据库中删除信息。我想要使​​用ajax发布链接。我尝试了一切,但它不起作用。Jquery Ajax Post删除服务器+ asp.net上的文件mvc + c#

但是,它的工作原理,如果我试图做别的事情而不是删除 - 说更新数据库中的字段。

你能告诉我我做错了什么吗?

查看:

<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);

}

回答:

这就像它变得愚蠢!

微妙的条件错误:

if (Directory.Exists(folder)) // Note the subtle condition difference 

{

var filePath = folder + photo.PhotoLocation + ".png";

var thumbPath = folder + "tn_" + photo.PhotoLocation + ".png";

websiteRepository.DeletePhotoFromServer(filePath);

websiteRepository.DeletePhotoFromServer(thumbPath);

}

至于数据库的一部分,我没有保存数据库:

public void DeletePhotoFromDb(PropertyPhotos photo) 

{

db.PropertyPhotos.Remove(photo);

db.SaveChanges(); // Missing this line

}

回答:

您应该将参数传递给您的控制器方法

$.ajax({ 

url: this.href,//check this.href in debugger

dataType: "text json",

type: "POST",

data: {Id: Id }, //pass argument here

success: function (data, textStatus) { }

});

以上是 Jquery Ajax Post删除服务器+ asp.net上的文件mvc + c# 的全部内容, 来源链接: utcz.com/qa/260747.html

回到顶部