2011-06-15 84 views
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;} 

但这也不管用。

任何人都可以提出一种方法,我可以实现这一点或提供任何意见,我要去哪里错了这是一个问题,我还没有能够解决小时后或在互联网上的研究?

回答

0

它看起来像一个模型属性没有初始化。如果你在该行添加一个断点并检查变量,我很肯定你会发现1是null

+0

是的,你是正确的客户对象正在返回一个null,只需要解决为什么现在。 – liam 2011-06-16 08:29:30

+0

如果是这样,它必须是您的存储库代码,而不是填充.Customer属性。看看:var customerSitesToShow = customerSiteRepository.CustomerSites; – Lester 2011-06-16 10:54:14

+0

谢谢,我设法让客户对象现在填充客户名称列表,现在我遇到的问题是我有两个列表要显示在视图中,一个客户名称列表和另一个列表的网站详细信息,我真正需要的是一个包含客户名称和网站详细信息的列表。 – liam 2011-06-16 13:40:11