我有以下MVC2视图,它是用viewmodel强类型的,viewmodel包含一个db表中的值列表,我需要在视图中显示第二个表中的单个值,这是我的视图代码< / p>
<%@ 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>
这是viewmodel,请注意我在viewmodel中包含一个Customer成员,因为除了客户站点列表之外我还要显示客户名称
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%>
尽管intellisense允许我使用
从视图中访问客户对象<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: <%}
我认为错误是由于视图呈现列表,我尝试将viewmodel成员更改为
public IList<Customer> {get; set;}
但这也不起作用。
任何人都可以提出一种方法,我可以实现这一点,或就我出错的地方提供任何建议这是一个问题,我无法在下班后解决或在互联网上进行研究?
答案 0 :(得分:0)
看起来其中一个模型属性未初始化。如果你在该行添加一个断点并检查变量,我很确定你会找到1 null
。