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