Передача URL в качестве параметра к действию контроллера - PullRequest
0 голосов
/ 02 мая 2011

На моей странице asp.net mvc мне нужно отобразить несколько изображений, которые хранятся на стороннем сервисе размещения изображений.В сервисе есть API, который возвращает мне список URL изображений.В файле * .cshtml есть разметка html:

@foreach (var img in Model.Images)
{
   <img src="@img.ImageUrl" />
}

Работает отлично.Но по какой-то причине я не могу использовать прямой URL-адрес изображения в атрибуте "src".Затем я создал новый асинхронный контроллер, который должен возвращать изображение:

public class ImagesController : AsyncController
    {
        //
        // GET: /Images/
        public void GetImageAsync(string url)
        {
            AsyncManager.OutstandingOperations.Increment();
            WebRequest request = WebRequest.Create(url);
            WebResponse response = request.GetResponse();
            AsyncManager.Parameters["response"] = response;
            AsyncManager.OutstandingOperations.Decrement();
        }

        public FileResult GetImageCompleted(WebResponse response)
        {
            return base.File(response.GetResponseStream(), response.ContentType);
        }

    }

Теперь мне нужно передать полный URL-адрес изображения в действие моего контроллера.

Примерно так:

@foreach (var img in Model.Images)
    {
       <img src="Images/GetImage/**@img.ImageUrl**" />
    }

как создать новый маршрут для передачи этого параметра в действие?

Спасибо!

1 Ответ

1 голос
/ 02 мая 2011

Ты имеешь в виду это?

routes.MapRoute(
    "GetImage",
    "Images/GetImage/{*url}",
    new { controller = "Images", action = "GetImageAsync" }
);

Хотя я не уверен, зачем тебе все это нужно.AsyncController + маршрутизация для извлечения всех URL-адресов изображений кажется излишней ...

...