ASP.net MVC2 Передача данных между строго типизированными представлениями - PullRequest
0 голосов
/ 15 июня 2011

У меня есть следующее представление 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%>

Хотя 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;}

, но это тоже не работает.

Может ли кто-нибудь предложить способ, которым я могу достичь этого, или дать какой-нибудь совет о том, где я ошибаюсь, это одна проблема, которую я не смог решить в нерабочее время или исследовал в Интернете?

1 Ответ

0 голосов
/ 15 июня 2011

Похоже, что одно из свойств модели не инициализировано. Если вы добавите точку останова в эту строку и проверите переменные, я уверен, что вы найдете 1, равный null.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...