如何解决ASP.net MVC2在强类型视图之间传递数据
| 我有以下使用视图模型强类型化的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>
这是视图模型,请注意,我要在视图模型中包括一个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;}
但这也不起作用。
任何人都可以建议我可以实现这一目标的方法,或者就我要去哪里的问题提供任何建议。这是我下班后或在Internet上无法解决的一个问题?
解决方法
似乎其中一个模型属性未初始化。如果您在该行上添加一个断点并检查变量,我很确定您会发现1等于
null
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。