【发布时间】:2015-02-12 12:32:50
【问题描述】:
我正在处理一个 MVC5 项目,我创建了一个简单的系统,用户可以为每个员工上传文件“CV”。 现在除了“删除文件”之外,一切都对我有用。 我需要添加删除上传文件的操作方法以及将其替换为另一个文件的功能。
在模型类中我创建了两个属性 HttpPostedFileBase CV 来保存上传的文件 和字符串 cvName,用于保存文件名并使用它来创建指向该文件的链接。
在控制器中我做了什么:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult DeleteCV(string cvName)
{
//Session["DeleteSuccess"] = "No";
var CVName = "";
CVName = cvName;
string fullPath = Request.MapPath("~/Content/CVs/" + CVName);
if (System.IO.File.Exists(fullPath))
{
System.IO.File.Delete(fullPath);
//Session["DeleteSuccess"] = "Yes";
}
return RedirectToAction("Index");
}
这是视图:
<div class="form-group">
@Html.LabelFor(model => model.CV, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@{
if (File.Exists(Server.MapPath("~/Content/CVs/"
+ Html.DisplayFor(model => model.cvName))))
{
<a href="~/Content/CVs/@Html.DisplayFor(model => model.cvName)"> @Html.DisplayFor(model => model.cvName) @Html.HiddenFor(model => model.cvName)</a>
<a href="@Url.Action("DeleteCV", new { @Model.cvName })">
<img src="@Url.Content("~/Content/Images/Delete.jpg")" width="20" height="20" class="img-rounded" />
</a>
}
else
{
<input type="file" name="file" accept="pdf" />
}
}
</div>
</div>
我无法删除文件,每次出现此消息时
找不到资源。
描述:HTTP 404。您要查找的资源(或其依赖项之一)可能已被删除、名称已更改或暂时不可用。请检查以下 URL 并确保其拼写正确。
请求的 URL:/DeleteCV
【问题讨论】:
-
那么,问题是什么?您的代码似乎没问题。什么不工作?您收到什么样的错误消息(如果有)?
-
请注意:这肯定应该使用 DELETE 动词吗?将其更改为使用 HttpDelete 来检查语义。另外,您遇到的问题是什么?你能发布错误吗?
-
@iwayneo 嗯,不,您不能从表单发送 DELETE。不要叫我雪莉。
-
哦,删除超链接! I like that!:D
-
很快就会有很好的答案。我将添加一个小技巧 - 当它基本上等同于
@Model.cvName时,无需使用@Html.DisplayFor(model => model.cvName)。除非你有一些花哨的字符串显示器?
标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4