2012-04-29 87 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