2012-01-25 7 views
2

Кто-нибудь знает, как я могу перенаправить все запросы, чтобы сказать/изображения в/Содержание/изображения в MVC3? Я просто хочу определенные соглашения об именах.Как сопоставить маршруты ресурсов в ASP.NET MVC3?

Спасибо,

+0

Как генерируются эти запросы? У вас есть какой-то унаследованный сайт, для которого вы хотите изменить URL? –

ответ

0

Лучший ответ, который я могу дать, - никогда не пытаться запрашивать контент непосредственно из самого представления.

Скорее создайте HTML-помощники для обработки этих запросов и укажите только фактический путь к файлам в этих помощниках. Таким образом, когда вещи неизбежно движутся вокруг, вы меняете путь один раз в своем помощнике, и каждый вид просто работает. это пример моего помощника по изображению, я думаю, что я украл это у Роба Конери и его потрясающего образца Tekpub MVC.

В этом классе я объявляю статические переменные pubdir (для моего каталога содержимого) и imageDir (для моего изображения вложенной в моем каталоге содержимого)

public static string Image(this HtmlHelper helper, string fileName, string attributes) 
    { 
     fileName = string.Format("{0}/{1}/{2}", pubDir, imageDir, fileName); 
     if (string.IsNullOrEmpty(attributes)) 
     { 
      return string.Format("<img src='{0}'/>", helper.AttributeEncode(fileName)); 
     } 
     var temp = string.Format("<img src='{0}' '{1}' />", helper.AttributeEncode(fileName), helper.AttributeEncode(attributes)); 

     return temp; 
    } 

Я перегружен это другим способом, когда все у меня есть имя файла ,

public static string Image(this HtmlHelper helper, string fileName) 
    { 
     return Image(helper, fileName, ""); 
    } 

Теперь, когда я хочу, изображение, на мой взгляд, я называю

@Html.Image("hello.jpg") 

Все, что я указать имя файла, а тег изображения возвращается ко мне. Вы можете принять это еще (если хотите) и сделать метод HelloImage, который не принимает аргументов, где вы указываете имя файла в фактическом методе, если изображение когда-либо переименовано.

Я сделал это для вещей, таких как баннеры и логотипы, которые используются повторно. Я начал делать то же самое и для actionlinks, в случае, если контроллеры, действия и области будут перемещены или переименованы.

http://codingsmith.co.za/extending-the-actionlink-helper-in-mvc/

+0

Как насчет изображений, связанных с css-файлами? Они отвечают на вопрос ОП, но не этот ответ. – ANeves

Смежные вопросы