我有一个带有控制器Menucontroller的Viewpage菜单。我有一个partialView ViewItems,强类型为对象BagItem与控制器BagItem。 我试图从视图页面(Menu.aspx)渲染部分视图,并且无法渲染部分视图。任何帮助将不胜感激。新到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 :(得分:1)
我认为你想要的只是这个:
<% Html.RenderPartial("ViewItems", ViewData["BagItems"]); %>
这假设您的部分视图名为ViewItems.ascx。
您可以从视图中删除以下行:
<% List<BagItem> sb = new List<BagItem>(); %>
更新:您的部分视图不应包含<body>...</body>
个标记。这些应该在母版页上。
答案 1 :(得分: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);
}