2012-02-09 3 views
0

Вот метод контроллераПолучить Ури в действие в ASP.NET MVC

public class FeedController : ControllerBase 
    { 

     public RssActionResult Rss() 
     { 
      //........ 

      List<SyndicationItem> items = new List<SyndicationItem>(); 
      var photosList = Facade.Photos.Get() 
       .Select(x => 
        new SyndicationItem(
         x.Title, 
         x.PreviewPath, 
         new Uri("http://site.com/"+CurrentLocale.CultureName+"/photos/show/" + x.ID + ".html"), x.ID.ToString(), 
         DateTime.UtcNow) 
         ); 
      //........ 
      return new RssActionResult() { Feed = feed }; 
     } 

    } 

Как я могу избежать жесткого кодирования в Ури?

UPDATE

routes.MapRouteLowercase(
       "Photos_Route", 
       "{culture}/photos/{action}/{id}.html", 
       new { controller = "photos", action = "show", culture = defaultCulture } 
       ); 
+0

Что это URL? Это часть вашего сайта? Или это какой-то внешний url? Если это часть вашего сайта, как выглядят ваши определения маршрутов? Или это просто статический файл? –

+0

Это URL моего сайта. – Alexandre

ответ

1

Если URI является ресурс на вашем сайте, и если у вас есть маршрут, определенный для этого, вы можете использовать что-то похожее на это:

Url.RouteUrl(new RouteValueDictionary{ {"controller","Photo"}, {"action","show"}, {"Id",x.ID} }) 

Существует несколько переопределений для метода RouteUrl.

В противном случае, если этот URI является ресурсом на каком-либо другом сайте, вы можете просто сохранить формат URI в web.config и использовать string.Format (urlFormatFromWebConfig, x.ID) для создания URL-адреса.

EDIT: Более конкретно, теперь вы в курсе маршрута:

new Uri(Url.RouteUrl("Photos_Route", new RouteValueDictionary{ {"culture", CurrentLocale.CultureName}, {"ID", x.ID.ToString()} }); 
+0

В вашем редактировании есть ошибка. – Alexandre

+0

Спасибо за указание. Я думаю, теперь это исправлено. –

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