Я пытаюсь показать Диаграмму (которая является PartialView) под моей Случайной страницей с некоторыми другими текстами. И я хочу передать мою модель в представлении этому PartialView. Для этого я создал контроллер:
public ActionResult Random()
{
var movie = new Movie() { Name = "Shrek!" };
var customers = new List<Customer>
{
new Customer { Name = "Customer 1", Id = 5 },
new Customer { Name = "Customer 2", Id = 3 }
};
var viewModel = new RandomMovieViewModel
{
Movie = movie,
Customers = customers
};
return View(viewModel);
}
public ActionResult ShowChart(RandomMovieViewModel model)
{
return PartialView("_Chart1", model);
}
RandomMovieViewModel.cs:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Vidly.Models;
namespace Vidly.ViewModels
{
public class RandomMovieViewModel
{
public Movie Movie { get; set; }
public List<Customer> Customers { get; set; }
}
}
Мой основной вид (Random.cs html):
@model Vidly.ViewModels.RandomMovieViewModel
@{
ViewBag.Title = "Random";
Layout = "~/Views/Shared/_Layout.cshtml";
}
@{
var className = Model.Customers.Count > 0 ? "popular" : null;
}
<h2 class="@className">@Model.Movie.Name</h2>
<img src="@Url.Action("ShowChart","Movies", Model)" alt="Some alt text" />
@if(Model.Customers.Count == 0)
{
<text>No one has rented this movie before.</text>
}
else
{
<ul>
@foreach (var customer in Model.Customers)
{
<li>@customer.Name</li>
}
</ul>
}
И мой частичный вид диаграммы (_Chart1.cs html):
@model Vidly.ViewModels.RandomMovieViewModel
@{
List<string> customerNames = new List<string>();
List<string> customerIds = new List<string>();
foreach (var customer in Model.Customers)
{
customerNames.Add(customer.Name);
customerIds.Add(customer.Id.ToString());
}
var myChart = new Chart(width: 600, height: 400)
.AddTitle(Model.Movie.Name)
.AddSeries(chartType: "column",
xValue: customerNames.ToArray(),
yValues: customerIds.ToArray())
.Write();
}
Однако при доступе к Random (основной вид) я получил исключение NullReferenceException из-за Chart1. Как я могу передать модель на Chart1?
Спасибо уже за вашу помощь.