0
我有以下MVC2视图强制使用viewmodel类型,viewmodel包含一个数据库表中的值列表,我需要从第二个表中显示单个值在看来,这是我的看法代码ASP.net MVC2在强类型视图之间传递数据
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<CustomerDatabase.WebUI.Models.CustomerSitesListViewModel> " %>
<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
Customer Sites
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<% foreach (var customerSite in Model.CustomerSites) { %>
<% Html.RenderPartial("CustomerSiteSummary", customerSite); %>
<%} %>
</asp:Content>
这是视图模型,发现我包括在视图模型一个客户成员,因为我想除了客户网站的列表中显示客户名称
namespace CustomerDatabase.WebUI.Models
{
public class CustomerSitesListViewModel
{
public IList<CustomerSite> CustomerSites { get; set; }
public PagingInfo PagingInfo { get; set; }
public Customer customer { get; set; }
}
}
这是我的视图控制器代码
public ViewResult List([DefaultValue(1)] int page)
{
var customerSitesToShow = customerSiteRepository.CustomerSites;
var viewModel = new CustomerSitesListViewModel
{
CustomerSites = customerSitesToShow.Skip((page - 1) * PageSize).Take(PageSize).ToList(),
PagingInfo = new PagingInfo
{
CurrentPage = page,
ItemsPerPage = PageSize,
TotalItems = customerSitesToShow.Count()
}
};
return View(viewModel); //Passed to view as ViewData.Model (or simply model)
}
这是我的呈现列表局部视图,
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<CustomerDatabase.Domain.Entities.CustomerSite>" %>
<div class="item">
<div class="customer-list-item">
<h2><%:Model.customer.CustomerName%></h2>
<%: Model.AddressLine1 %>
<%: Model.AddressLine2%>
虽然智能感知让我从视图访问客户对象与
<h2><%:Model.customer.CustomerName%></h2>
错误是当我导航到视图时抛出,
未将对象引用设置为对象的实例。 源错误:
Line 7: <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
Line 8: <% foreach (var customerSite in Model.CustomerSites) { %>
Line 9: <%:Model.customer.CustomerName%>
Line 10: <% Html.RenderPartial("CustomerSiteSummary", customerSite); %>
Line 11: <%}
我认为错误是由于渲染列表视图,我试过视图模型成员到
public IList<Customer> {get; set;}
但这也不管用。
任何人都可以提出一种方法,我可以实现这一点或提供任何意见,我要去哪里错了这是一个问题,我还没有能够解决小时后或在互联网上的研究?
是的,你是正确的客户对象正在返回一个null,只需要解决为什么现在。 – liam 2011-06-16 08:29:30
如果是这样,它必须是您的存储库代码,而不是填充.Customer属性。看看:var customerSitesToShow = customerSiteRepository.CustomerSites; – Lester 2011-06-16 10:54:14
谢谢,我设法让客户对象现在填充客户名称列表,现在我遇到的问题是我有两个列表要显示在视图中,一个客户名称列表和另一个列表的网站详细信息,我真正需要的是一个包含客户名称和网站详细信息的列表。 – liam 2011-06-16 13:40:11