2012-04-29 86 views
1

照片我创造了个人的Flickr页面,在这里我想这样显示我的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; } 
    } 

正如你所看到的,它包含与被摄物体和大小的列表。大小属性是设置图像的大小。 ( “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参数。

我的问题:我应该改变我的代码,所以我可以正确地传递大小参数?

结果应该是,我可以在控制器中设置大小参数,我的视图将根据此参数呈现不同大小的图像。

以下是我希望我的控制器看起来像:

public ActionResult PhotoViewer() 
    { 
     FlickrMethods flickrmethods = new FlickrMethods(); 
     FlickrPhotoCollection photocollection = flickrmethods.getPublicPhotos("[email protected]", "1"); 
     photocollection.size = "b"; 
     return View(photocollection); 
    } 

我再次重申我的问题:我如何传递的大小“B”到在我的部分使用的FlickrPhoto类的显示方法查看'照片'?

我希望我已经明确了解了。

谢谢!

回答

1

您将需要将size属性放在FlickrPhoto类中,并在您的加载方法中相应地设置它。抽出时间来看看我的问题

<img src="@(Model.display(Model.size))" name="modal" class="photo" ref="@Model.owner" flickrId="@Model.id" /> 
+0

感谢:然后在你的图片浏览,你可以 替换此:

<img src="@(Model.display()" name="modal" class="photo" ref="@Model.owner" flickrId="@Model.id" /> 

与此有关。我第一次尝试过,但不知道在哪里以及如何在flickrphoto类中设置size属性。你能告诉我如何设置这个属性吗?我目前的FlickrPhoto实现只是我从flickr获得的json响应的直接副本。 – ThdK 2012-04-29 12:30:15

+0

下面是我做到这一点:photocollection.size =“b”;现在将遍历集合中的每个flickrphoto并更改其大小属性。这是做到这一点的正确方法吗?它的工作原理,但我不确定性能是否与更大的集合保持一致? – ThdK 2012-04-29 14:03:56

+0

那么这是一个*方法*来做到这一点。实际载入照片并填充其他信息时,最好设置它。 – mattytommo 2012-04-29 16:14:35