2011-06-15 87 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