2010-02-02 5 views
1

J'ai un menu Viewpage avec contrôleur Menucontroller. J'ai un partialView ViewItems qui est fortement typé comme objet BagItem avec le contrOller BagItem. J'essaie de rendre la vue partielle à partir de la page Vue (Menu.aspx) et je ne peux pas afficher une vue partielle. Toute aide serait grandement appréciée.Nouveau à MVC. Voici le codeMVC - Vues partielles

Menu.aspx

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MenuItem>>" %> 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server"> 
    OrderMenu 
</asp:Content> 
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> 
    <h2> 
     OrderMenu</h2> 
    <div> 
     <table> 
      <tr> 
       <td> 
        <% List<BagItem> sb = new List<BagItem>(); %> 
        <% Html.RenderPartial("../ShoppingBagItem/ViewItems", sb, (ViewDataDictionary)ViewData["BagItems"]);%> 
       </td> 
      </tr> 
     </table> 
    </div> 

PartialView

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<IEnumerable<GuessCafe.Library.BagItem>>" %> 
<body> 
    <div id="divLatestStocks"> 
     <%foreach (var item in Model) 
      { %> 
     <ul> 
      <li> 
       <%= item.ShoppingBagItemId %> 
      </li> 
     </ul> 

     <%} 
     %> 
    </div> 
</body> 

BagItemController

public ActionResult GetShoppingBagItems() 
{ 
    ViewData["BagItems"] = ObjectContext.BagItem.ToList(); 
    return View(ViewData["BagItems"]); 
} 
+0

Que se passe-t-il? la vue partielle n'est-elle pas simplement rendue? voyez-vous une erreur? – TJB

Répondre

1

Je pense que ce que vous voulez est simplement ceci:

<% Html.RenderPartial("ViewItems", ViewData["BagItems"]); %> 

Cela suppose votre vue partielle est nommé ViewItems.ascx.

Vous pouvez supprimer la ligne suivante de votre point de vue:

<% List<BagItem> sb = new List<BagItem>(); %> 

Mise à jour: ne doit pas contenir votre vue partielle <body>...</body> tags. Ceux-ci devraient soit être sur la page maître.

+0

Merci TJB, oui la vue partielle n'est pas rendue. Merci Martin, si je fais ce que vous avez dit, je reçois l'erreur L'élément de modèle transmis dans le dictionnaire est de type 'System.Collections.Generic.List'1 [MenuItem]' mais ce dictionnaire nécessite un élément de modèle de type 'System.Collections.Generic.IEnumerable'1 [Item]' – user264670

0
public ActionResult GetShoppingBagItems() 
{ 
    ViewData["BagItems"] = ObjectContext.BagItem.ToList(); 
    return View(ViewData["BagItems"]); 
} 

Ceci est une mauvaise pratique du tout. Si vous voulez passer Modèle pour voir pourquoi utiliser ViewData Dictionary? Vous pouvez simplement écrire:

 public ActionResult GetShoppingBagItems() 
{ 
    var BagItems = ObjectContext.BagItem.ToList(); 
    return View(BagItems); 
} 
+0

Merci ali62b, comme je l'ai dit je suis nouveau à mvc, juste entrer dans les meilleures pratiques – user264670

Questions connexes