我创建了一个个人的flickr页面,我想要显示我的flickr照片,收藏夹等。
我正在使用asp.net mvc 3技术。这个小项目实际上是我想要为自己完成的第一个真正的项目。看看我是否掌握了MVC的基础知识。
所以我设置了一个小框架,以便能够使用Flickr进行身份验证并获取我的请求的JSON响应。 (包含图像数据)
我将这些图像渲染为列表。以下是对此的看法:
<body>
<div id="container">
<div id="slideshow">
<ul id="slides">
@Html.Partial("PhotoList", Model)
</ul>
</div>
</div>
这是使用以下类型的强类型视图:
public class FlickrPhotoCollection
{
public string size { get; set; }
public List<FlickrPhoto> photo { get; set; }
}
如您所见,它包含一个包含照片对象和大小的列表。 size属性用于设置图像的大小。 (“t”=缩略图,“m”=中等,......)
接下来使用另外两个部分视图:
PhotoList:
@model FlickrPhotoCollection
@ViewBag.Size = @Model.size;
@foreach (FlickrPhoto p in Model.photo)
{
<li>
@Html.Partial("Photo", p)
</li>
}
照片:
@model FlickrPhoto
<img src="@(Model.display()" name="modal" class="photo" ref="@Model.owner" flickrId="@Model.id" />
FlickrPhoto的显示方法将根据要求的尺寸返回实际图像的路径。
private string display(string size)
{
if (!string.IsNullOrEmpty(size))
{
size = "_" + size;
}
return String.Format("http://farm{0}.static.flickr.com/{1}/{2}_{3}{4}.jpg", farm, server, id, secret, size);
}
如您所见,此方法需要一个size参数,而我没有在视图中传递size参数。
我的问题:我应该在代码中更改什么,以便我可以正确传递size参数?
结果应该是我可以在控制器中设置size参数,我的视图将根据此参数呈现不同大小的图像。
以下是我希望控制器看起来像:
public ActionResult PhotoViewer()
{
FlickrMethods flickrmethods = new FlickrMethods();
FlickrPhotoCollection photocollection = flickrmethods.getPublicPhotos("57820970@N06", "1");
photocollection.size = "b";
return View(photocollection);
}
我再次重复我的问题:如何将大小“b”传递给我的局部视图“照片”中使用的FlickrPhoto类的显示方法?
我希望我明确表达清楚。
谢谢!
答案 0 :(得分:1)
您需要将size
属性放在FlickrPhoto
类中,并在您的加载方法中相应地设置它。然后在你的照片视图中你可以
替换这个:
<img src="@(Model.display()" name="modal" class="photo" ref="@Model.owner" flickrId="@Model.id" />
有了这个:
<img src="@(Model.display(Model.size))" name="modal" class="photo" ref="@Model.owner" flickrId="@Model.id" />