У меня есть модель вида, которая выглядит следующим образом:
namespace AutoForm.Models
{
public class ProductViewModel
{
[UIHint("DropDownList")]
public String Category { get; set; }
[ScaffoldColumn(false)]
public IEnumerable<SelectListItem> CategoryList { get; set; }
...
}
}
Имеет свойства Category и CategoryList. CategoryList - это исходные данные для элемента пользовательского интерфейса выпадающего списка Category.
У меня есть EditorTemplate, который выглядит так:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ProductViewModel>" %>
<%@ Import Namespace="AutoForm.Models"%>
<%=Html.DropDownListFor(m => m.Category , Model.CategoryList ) %>
ПРИМЕЧАНИЕ. Шаблон EditorTemplate строго типизирован для ProductViewModel
Мой контроллер заполняет свойство CategoryList данными из базы данных.
Я не могу заставить шаблон DropDownListFor отобразить раскрывающийся список с данными из CategoryList. Я знаю, что CategoryList заполняется данными в контроллере, потому что я вижу данные при отладке и прохождении через контроллер.
Вот мое сообщение об ошибке в браузере:
Ошибка сервера в «/» приложении.
Ссылка на объект не установлена на
экземпляр объекта. Описание: Ан
необработанное исключение произошло во время
выполнение текущей сети
запрос. Пожалуйста, просмотрите трассировку стека
для получения дополнительной информации об ошибке
и откуда оно взято в коде.
Сведения об исключении:
System.NullReferenceException: объект
ссылка не установлена на экземпляр
объект.
Ошибка источника:
Строка 2: <% @ Import
Namespace = "AutoForm.Models"%> Строка 3:
Строка 4: <% = Html.DropDownListFor (m =>
m.Category, Model.CategoryList)%>
Исходный файл:
C: \ ProjectStore \ AutoForm \ AutoForm \ Views \ Shared \ EditorTemplates \ DropDownList.ascx
Линия: 4
Есть идеи?
Спасибо
Tom
В качестве продолжения я заметил, что ViewData.Model имеет значение null, когда я перебираю код в EditorTemplate. У меня есть EditorTemplate со строгой типизацией «ProductViewModel», который также является типом, который передается представлению в контроллере. Я озадачен тем, почему ViewData.Model имеет значение null, даже если он заполняется в контроллере перед передачей в представление.