2010-02-02 108 views
1

我有一个带控制器Menucontroller的Viewpage菜单。我有一个partialView ViewItems,它被强制类型化为带控制器BagItem的对象BagItem。 我试图呈现从View页面(Menu.aspx)的局部视图,无法呈现局部视图。任何帮助将不胜感激。新的MVC。下面是代码MVC - 部分视图

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

发生了什么事?是局部视图只是没有被呈现?你看到一个错误? – TJB 2010-02-02 19:59:58

回答

1

我想你想要的只是这个:

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

这是假设你的局部视图命名为ViewItems.ascx。

您可以从您的视图中删除以下行:

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

更新:你的部分观点不应该包含<body>...</body>标签。这些应该在母版页上。

+0

感谢TJB,有部分观点不被渲染。 感谢马丁,我要是你的话,我得到的错误 传递到字典的模型项的类型为“System.Collections.Generic.List'1 [菜单项]”,但本词典需要类型的模型项目“System.Collections.Generic.IEnumerable'1 [项目]” – user264670 2010-02-02 20:12:03

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

这是一个不好的做法。如果你想通过Model来查看为什么只使用ViewData Dictionary? 您可以简单地写:

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

感谢ali62b,因为我说我是新来的MVC,刚刚进入最佳实践 – user264670 2010-02-02 20:16:19