2009-11-11 117 views
0

我有一個貨架集合,每個貨架都有一個產品集合。爲了優化重用,我創建了一個局部視圖ProductList.ascx,這個視圖在循環遍歷Shelves列表時調用。在部分視圖中,我希望爲每種產品都有一個添加鏈接,並且需要使用貨架ID才能這樣做。由於部分視圖是產品的集合,並且可能在該貨架上沒有任何產品,因此如何將包含貨架ID的部分的添加鏈接包含在內?渲染部分視圖數據父/子

父視圖:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<ShelfDetail>>" %> 
<% foreach (ShelfDetail shelf in Model) 
       { %> 

        <%= Html.Encode(shelf.Name) %> 
         <%= Html.ActionLink("Delete Shelf", "Delete", "Shelf", new { Id = shelf.Id }, null)%> 
         <%= Html.ActionLink("Edit Shelf", "Edit", "Shelf", new { Id = shelf.Id }, null) %> 

         <% Html.RenderPartial("SoupList", shelf.Soups); %> 
         <% Html.RenderPartial("PieList", shelf.Pies); %> 

         <p><%= Html.Encode(shelf.Description) %></p> 
        <% } %> 
     <% } %> 

子湯景(試圖添加路由值在那裏說: 「有必要架ID HERE」):

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<SoupList>>" %> 

Doors: <%= Html.ActionLink("Add Soup", "Add", "Soup", NEED SHELF ID HERE, null)%> 
<% foreach (SoupList soup in Model) 
{ %> 
    <%= Html.Encode(soup.Flavor) %> 
<% } %> 

回答

3

變化SoupList的一個模型類型包括貨架ID和湯品清單,例如:

public class SoupPresentation 
{ 
    public Guid ShelfId { get; set; } 
    public IEnumerable<SoupList> Soups { get; set; } 
} 
+0

謝謝克雷格。在這樣做時,我不必在Shelf視圖中遍歷它們,這使我無法將該邏輯移動到部分控制中?我可能會誤解這一點。現在,SoupList是一個演示對象,它包含一個Soup對象的扁平視圖,它包含一個ShelfId。我現在無法按照我現在閱讀的方式來解決這個問題。 – 2009-11-11 18:41:49

+2

是的,這是正確的瑞安。您必須對視圖模型進行一些轉換,因此它們不是IEnumerable 而是它們可能與ShelfProductList類似,其中id可以是集合的一部分。 – 2009-11-11 18:52:32

+0

感謝男士們,感謝幫助。 – 2009-11-11 19:05:39