Роутинг изображений в asp.net mvc

315
26 марта 2017, 01:44

Доброго времени суток! Есть такая проблема. Имеется приложение asp.net mvc. Наподобие википедии. В нем есть статьи, в статьях могут содержаться изображения. Изначально изображения хранились в файловой системе в папке внутри веб-приложения. Затем потребовалось перенести изображения из файловой системы в базу данных, что в итоге было сделано (воспользовался ответом отсюда). Но тут возникла проблема. Дело в том, что в статьях содержатся ссылки на изображения в файловой системе, но так как теперь изображения переехали в бд, то ссылки стали недействительными. Теперь я получаю изображения не по пути наподобие <img src="/ImagesFolder/myImg.png" /> а примерно так: <img src="Images/GetFile?id=myImg.png" /> где Images/GetFile - это действие контроллера, которое обращается к бд за запрошенным файлом. Разумеется я не хотел бы переписывать тысячи статей чтобы в каждой из них править ссылку на изображения (хотя теоретически это можно сделать). Хотелось бы как-то настроить маршрутизацию в приложении, чтобы оно знало, что старый url вида ImagesFolder/myImg.png надо сопоставить новому вида Images/GetFile?id=myImg.png. Может быть кто-то знает как это сделать для файлов в asp.net mvc? Пробовал разные варианты, например появившуюся наастройку маршрутов с помощью атрибутов, но ничего не вышло(

Answer 1

Что-то вроде

routes.MapRoute(
    name: "Legacy images",
    url: "ImagesFolder/{id}",
    defaults: new { 
        controller="Images", 
        action="GetFile"
    });
//...
routes.MapRoute(
    name: "Default",
    url: "{controller}/{action}/{id}",
    defaults: new {
            controller = "Home", 
            action = "Index"
    });
READ ALSO
Sympy не видит IronPython 2.7.5

Sympy не видит IronPython 2.7.5

Нужно запустить код питона в c#, а именно использовать библиотеку sympy, нашел топик, который отвечает на мой вопрос http://stackoverflowcom/questions/6721736/c-sharp-library-for-algebra-simplification-and-solving

247
Вставить пробел через каждую букву

Вставить пробел через каждую букву

Есть строка, например, string stroka="string"; мне надо вставить пробел через букву то есть на экране будет так: s t r i n g

232
сортировка по ORDERи изменения мест по ORDER в БД

сортировка по ORDERи изменения мест по ORDER в БД

привет всем! работаю над мини CMSс объектами у которых есть параметер ORDER(int)допустим у меня есть 10 объектов и у каждого свой ORDER от 1 - 10

197
Кодировка в c Sharp

Кодировка в c Sharp

Не знаю как правильно обозвать данный вопрос) Не пинайте) Задача стоит получить коды смайлов vkНо c# упорно съедает сами коды, превращая их в квардраты

230