在我的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**" />
}
如何创建新路由以将此参数传递给操作?
谢谢!
答案 0 :(得分:1)
你是说这个?
routes.MapRoute(
"GetImage",
"Images/GetImage/{*url}",
new { controller = "Images", action = "GetImageAsync" }
);
我不确定为什么你需要这一切。 AsyncController +路由以获取所有图像网址似乎有点过分......