处理常见功能

时间:2011-12-11 15:03:41

标签: c# asp.net-mvc-3 entity-framework-4.1

我正在使用实体框架代码优先制作具有类别,品牌和产品实体的产品管理系统。在任何模型上执行CRUD操作时,通常需要上传和删除图像。

现在,我已将代码直接插入到类别控制器中。现在,在为Brands开发CRUD功能时,我意识到我需要在我的品牌控制器中复制相同的上传和删除代码。这将工作正常,但它只会复制品牌和产品控制器中的代码。

如何确保我编写代码一次,然后在需要的地方使用它。以下是代码,我正在谈论类别控制器:

[HttpPost]
    public ActionResult Upload(HttpPostedFileBase fileData)
    {
        if (fileData != null && fileData.ContentLength > 0)
        {
            //var fileName = Server.MapPath("~/Content/Images/" + Path.GetFileName(fileData.FileName));
            int pictureCount = 800000;
            pictureCount += db.Pictures.Count();
            string extension = Path.GetExtension(fileData.FileName);
            string renamedImage = Server.MapPath("~/Content/Images/Categories/cat" + pictureCount + extension);
            fileData.SaveAs(renamedImage);
            return Json("/Content/Images/Categories/" + Path.GetFileName(renamedImage));
        }
        return Json(false);
    }

    [HttpPost]
    public ActionResult Remove(string fileName)
    {
        string completFileName = Server.MapPath("~" + fileName);
        System.IO.File.Delete(completFileName);
        return Json(true);
    }

1 个答案:

答案 0 :(得分:0)

我认为最简单的方法是使用ActionFilterAttribute来装饰控制器方法。您将使用您发布的代码覆盖OnResultExecuting方法,然后将操作方法​​的签名更改为以下内容:

[UploadFile]
public ActionResult Upload(string file)
{
 ....
}

[RemoveFile]
public ActionResult Remove(string file)
{
 ....
}