ASP. NET MVC Передача модели в частичное представление диаграммы - PullRequest
0 голосов
/ 19 апреля 2020

Я пытаюсь показать Диаграмму (которая является 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?

Спасибо уже за вашу помощь.

...