Nic*_*ray 0 asp.net-mvc partial-views
我可以显示所有客户的列表,我可以显示所有订单的列表,我想进一步.
我想在同一页面上呈现两个部分视图,以显示与该客户相关的客户详细信息和订单.
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage< MyDemo.Models.CustomerAndOrdersViewModel >" %>
<% Html.RenderPartial("CustomerDetails", this.ViewData.Model.Customer); %>
<% Html.RenderPartial("CustomerOrders", this.ViewData.Model.Order); %>
Run Code Online (Sandbox Code Playgroud)
我创建了一个viewmodel
public class CustomerAndOrdersViewModel
{
public CustomerAndOrdersViewModel(Customer customer,
IEnumerable<Order> orders)
{
this.Customer = customer;
this.Order = orders;
}
public Customer Customer { get; set; }
public IEnumerable<Order> Order { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在我的客户控制器中我定义了
ICustomerRepository customerRepository;
IOrderRepository orderRepository;
public CustomersController()
: this(new CustomerRepository())
{
}
public CustomersController(ICustomerRepository repository)
{
customerRepository = repository;
}
public CustomersController(IOrderRepository repository)
{
orderRepository = repository;
}
Run Code Online (Sandbox Code Playgroud)
然后我尝试将CustomerAndOrdersViewModel传递给详细信息视图
public ActionResult Details(int id)
{
QuestionAndOrderViewModel viewdata = new CustomerAndOrdersViewModel(customerRepository.GetCustomer(id),
orderRepository.FindAllOrders());
return View(viewdata);
}
Run Code Online (Sandbox Code Playgroud)
但我收到的错误是"对象引用未设置为对象的实例"对于orderRepository.
我哪里错了?
您的控制器的构造函数只接受一个参数,并且您尝试在同一实例中使用这两个值.
你可以做,例如:
ICustomerRepository customerRepository;
IOrderRepository orderRepository;
public CustomersController()
: this(new CustomerRepository(), new OrderRepository())
{
}
public CustomersController(
ICustomerRepository customerRepository,
IOrderRepository orderRepository)
{
this.customerRepository = customerRepository;
this.orderRepository = orderRepository;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2427 次 |
| 最近记录: |