将url作为参数传递给控制器​​操作

时间:2011-05-02 16:17:53

标签: asp.net-mvc url routing parameter-passing

在我的asp.net mvc页面上,我需要呈现存储在第三方图像托管服务上的多个图像。该服务有一些api,它返回一个图像网址列表。 在* .cshtml文件中有一个不合时宜的html标记:

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

它完美无缺。但由于某种原因,我不能在“src”属性中使用直接URL到图像。接下来,我创建了应该返回图像的新异步控制器:

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);
        }

    }

现在我需要将完整的图片网址传递给我的控制器操作。

这样的事情:

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

如何创建新路由以将此参数传递给操作?

谢谢!

1 个答案:

答案 0 :(得分:1)

你是说这个?

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

我不确定为什么你需要这一切。 AsyncController +路由以获取所有图像网址似乎有点过分......