У меня есть страница, содержащая объект Chart, который я использую в качестве маршрута по умолчанию в ASP.NET MVC. Когда я запускаю приложение, я получаю исключение из-за пустой ссылки. Если я использую URL с контроллером и явно указанным действием, все работает нормально.
Вот код, чтобы показать, что я имею в виду ...
В RegisterRoutes:
routes.MapRoute("Default", "{controller}/{action}", new { controller = "Dashboard", action = "Index" });
DashboardModel.cs:
public class DashboardModel
{
public Chart MyChart { get; set; }
}
DashboardController.cs
public ActionResult Index()
{
Chart chart = CreateChart();
DashboardModel dm = new DashboardModel();
dm.MyChart = chart;
return View(dm);
}
index.aspx
<% chartPanel.Controls.Add(Model.MyChart); %>
<asp:Panel ID="chartPanel" runat="server"></asp:Panel>
Запуск приложения из отладчика с URL-адресом http://localhost:2313/ приводит к появлению NullReferenceExcpetion в первой строке, указанной выше в Index.aspx. Если я поставлю http://localhost:2313/Dashboard/Index в браузере, график будет отображаться правильно. Я установил точку останова в действии Index (), и он создает действительную модель и диаграмму, и точка останова срабатывает только один раз, прежде чем произойдет исключение.
Почему модель нулевая? Он должен создаваться каждый раз, когда мой метод действия вызывается из того, что я видел. В маршрутизации по умолчанию должно быть что-то еще, чего я не понимаю.