2010-06-29 13 views
0

我想創建一個叫ImageViewer的局部視圖。它將被稱爲提供圖像ID列表(簡化)。然後我想返回這個局部視圖,類似提供的數據可通過jQuery在.Net MVC 2

imagecontroller.ImageViewer(new int[] { 5, 6, 7 }); 

產生以下:

<div> 
    <img grayuparrow /> 
    <img source="image/getimage5" /> 
    <img blackdownarrow /> 
</div> 

點擊DownArrow中文然後使用jQuery的訪問(在本實施例6)下一個圖像。我應該沒有問題使用jQuery來獲取圖像,但我如何從PartialView存儲信息到DOM?我想存儲提供給操作方法的列表和當前索引。

或者我應該考慮完全不同的方式來實現這個滾動圖像查看器?

UPDATE:

我猜我問的是,有沒有辦法在一個MVC視圖標註在額外數據的DOM元素?

現在我有了這個代碼:

<script type="text/javascript"> 
    $(document).ready(function() { 
    var images = []; 
    <% foreach(ImageGroup group in Model) 
    { %> 
    images.push(imageGroup(<%= group.Description %>, [<%= Html.FormatArgs(group.ImageIDs) %> ])); 
<% } %> 
    setImageGroups(images, $(".imageviewer")); 
    } 
</script> 

imageGroup是一個JavaScript函數返回一個imageGroup對象。

哪個應該工作,但沒有任何干淨。有什麼方法可以輕鬆地將.Net對象轉換爲javascript對象,或者用額外的數據註釋一個DOM元素?

function setImageGroups(imagegroups, element) { 
$(element).data("imageGroups", imagegroups); 
$(element).data("imageIndex", 0); 
$(element).children(".upnav").click(previousImageGroup); 
$(element).children(".downnav").click(nextImageGroup); 
renderImageGroup(element); 
} 

回答

0

爲什麼不考慮讓你的局部視圖呈現所有圖像的代碼,但只有一個可見?或者,如果加載時間是一個問題,您可以簡單地將url存儲在一個javascript數組中並旋轉它們。

<div> 
    <img src="<%= Url.Content("~/content/images/grayuparrow.png") %>" /> 
    <% var display = true; 
     foreach (int id in Model.ImageIDs) 
     { %> 
      <img src="<%= Url.Action("get", "image", new { id = id }) %>" 
      <%= !display ? "style='display: none;' : "" %> 
      /> 
    <%  display = false; 
     } %> 
    <img src="<%= Url.Content("~/content/images/blackdownarror.png") %>" /> 
</div> 

<script type="text/javascript"> 
     var images = []; 
     var currentImage = 0; 
     <% foreach (int id in Model.ImageIDs) 
     { %> 
      images.push('<%= Url.Action("get", "image", new { id = id }) %>'); 
     <% } %> 
</script> 
<div> 
    <img src="<%= Url.Content("~/content/images/grayuparrow.png") %>" /> 
    <img src="<%= Url.Action("get", "image", new { id = Model.ImageIDs.First() }) %>" /> 
    <img src="<%= Url.Content("~/content/images/blackdownarror.png") %>" /> 
</div> 
+0

看起來這會增加一點複雜性的東西,通常會是一個簡單的Ajax調用來檢索20行左右的標記。雖然這是一個聰明的解決方案。 – R0MANARMY 2010-06-29 14:52:38

+0

@ROMANARMY - 我知道這是通過部分返回的標記;圖像ID被提供給部分並作爲圖像查看器呈現。當然,我忽略了使視圖實際上在圖像中旋轉的代碼。 – tvanfosson 2010-06-29 15:01:01

+0

嗯,順便說一句,我的名字有一個0(零),而不是一個O(主要是爲了將來的參考,所以我實際上看到的消息指向我)。 – R0MANARMY 2010-06-29 15:27:58

相關問題