Проблема с шаблонами выпадающего редактора ASP.NET MVC для нумерованных перечислений - PullRequest
2 голосов
/ 22 февраля 2012

Как мне обработать Nullable точно так же, как я обращаюсь с Enum в файле String.cshtml?


Справочная информация: Я успешно реализовал пользовательский шаблон редактора для моих перечислений (реализуя String.cshtml в Views / Shared / EditorTemplates / String.cshtml.

Я понял, что он работает как резервный тип для Enums, поэтому всякий раз, когда у вас есть

Html.EditorFor(m => m.PropertyOfTypeEnum)

Это создает мой правильно выпадающий список, в котором я могу выбрать параметры.

Проблема: проблема возникает, когда мой PropertyOfTypeEnum равен Nullable <> . Я не совсем понимаю, почему, он не возвращается в String.cshtml , и поэтому я не могу обработать его для отображения моего выпадающего списка.

Дополнительная информация: Я дважды проверил, чтобы увидеть, и это на самом деле не достигает моей точки останова на моем String.cshtml .

Кто-нибудь знает, как с этим обращаться?

1 Ответ

1 голос
/ 22 февраля 2012

Я предполагаю, что это не работает, потому что вызов ToString() для нулевого объекта не удался, поэтому он не может вывести использование String.cshtml , посмотрев на тип данных (который является Нулевое Enum, а не нулевая строка).

Вы можете помочь вашему шаблону редактора, указав, что он должен использоваться: Добавьте [UIHint("String")] в модель представления для требуемого свойства enum.


Альтернативное решение:
Я должен был решить ту же проблему, но использовал другую технику. Я добавил дополнительный метод расширения для DropDownFor, который понимает перечисления. Например:

public static MvcHtmlString DropDownListFor<TModel, TProperty>(this HtmlHelper<TModel> htmlHelper, Expression<Func<TModel, TProperty>> expression) 
               where TProperty : struct
{
            IEnumerable<SelectListItem> selectList = DropDownHelper.ToSelectListItems<TProperty>();
            return htmlHelper.DropDownListFor(expression, selectList);
}
...