ASP.Net MVC 2 DropDownListFor в EditorTemplate - PullRequest
1 голос
/ 22 апреля 2010

У меня есть модель вида, которая выглядит следующим образом:

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, даже если он заполняется в контроллере перед передачей в представление.

1 Ответ

0 голосов
/ 19 марта 2011
<%=Html.DropDownListFor(m => m.Category , Model.CategoryList ) %>

Если ваша модель пуста, этот вызов Model.CategoryList не будет работать.Вместо этого вы можете использовать статическую функцию.

...