如何创建通用部分视图以从flickr渲染照片

本文关键字:视图 flickr 照片 用部 何创建 创建 | 更新日期: 2023-09-27 18:32:48

我正在创建一个个人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"=中,....(

接下来使用另外两个分部视图:

照片列表:

  @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("57820970@N06", "1");
        photocollection.size = "b";
        return View(photocollection);
    }

再次重复我的问题:如何将大小"b"传递给我的部分视图"照片"中使用的 FlickrPhoto 类的显示方法?

我希望我说得足够清楚,可以理解。

谢谢!

如何创建通用部分视图以从flickr渲染照片

您需要

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" />