Работа с общей функциональностью - PullRequest
0 голосов
/ 11 декабря 2011

Я создаю систему управления продуктами с использованием сущностей категорий, брендов и продуктов, используя код структуры Entity-first. При выполнении операции CRUD для любой модели существует общее требование загрузки и удаления изображения.

Прямо сейчас я вставил код прямо в мой контроллер категорий. Теперь, когда я разрабатывал функциональность 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 голосов
/ 11 декабря 2011

Я думаю, что самый простой способ сделать это - использовать ActionFilterAttribute , который можно использовать для украшения метода контроллера.Вы переопределите метод OnResultExecuting с кодом, который вы опубликовали, а затем измените подпись метода действия на что-то вроде следующего:

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

[RemoveFile]
public ActionResult Remove(string file)
{
 ....
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...