照片我創造了個人的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類的顯示方法查看'照片'?
我希望我已經明確瞭解了。
謝謝!
感謝:然後在你的圖片瀏覽,你可以 替換此:
與此有關。我第一次嘗試過,但不知道在哪裏以及如何在flickrphoto類中設置size屬性。你能告訴我如何設置這個屬性嗎?我目前的FlickrPhoto實現只是我從flickr獲得的json響應的直接副本。 – ThdK 2012-04-29 12:30:15
下面是我做到這一點:photocollection.size =「b」;現在將遍歷集合中的每個flickrphoto並更改其大小屬性。這是做到這一點的正確方法嗎?它的工作原理,但我不確定性能是否與更大的集合保持一致? – ThdK 2012-04-29 14:03:56
那麼這是一個*方法*來做到這一點。實際載入照片並填充其他信息時,最好設置它。 – mattytommo 2012-04-29 16:14:35