Шаблон MVC3 createoredit теперь взрывается в поле nullable int

После некоторых обновлений моего проекта внезапно мой сгенерированный файл "_createoredit.cshtml" взрывается следующим образом:

Элемент модели, переданный в словарь, имеет значение null, но для этого словаря требуется ненулевой элемент модели типа System.Int32. Описание: во время выполнения текущего веб-запроса возникло необработанное исключение. Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и о том, где она возникла в коде.

Сведения об исключении: System.InvalidOperationException: элемент модели, переданный в словарь, имеет значение null, но для этого словаря требуется ненулевой элемент модели типа System.Int32.

Ошибка источника:

Line 273:</div> 
Line 274:<div class="editor-field"> 
Line 275:@Html.EditorFor(model => model.NumOfStores)
Line 276:@Html.ValidationMessageFor(model => model.NumOfStores)
Line 277:</div>

Поле, на которое он ссылается, имеет тип int, допускающий значение NULL. Это просто работало раньше (производственная версия все еще работает нормально), и изменения, которые я внес в проект, не должны были коснуться ничего, что он использует, поэтому теперь я не могу понять, почему, черт возьми, это взрывается.

обновление 1- добавление определения поля из модели

[DisplayName("Number of Stores (if applicable)")]
public Nullable<int> NumOfStores { get; set; }

Также я проверил, что у всех типов значений, допускающих значение NULL, такая же проблема.


person Brady Moritz    schedule 29.11.2011    source источник


Ответы (2)


Попробуйте указать имя для вашего шаблона.

@Html.EditorFor(model => model.NumOfStores, "NumStoresTemplate")

Дополнительная информация (из MVC 2, но я думаю, что это применимо к вашей ситуации) http://bradwilson.typepad.com/blog/2009/10/aspnet-mvc-2-templates-part-3-default-templates.html

person mattypiper    schedule 29.11.2011
comment
Кроме того, модель model.NumOfStores имеет тип int с нулевым значением, поэтому все должно быть в порядке. Это мой первый раз, когда я возился с формами и шаблонами mvc, меня поражает, насколько они хрупкие и просто ... плохие. - person Brady Moritz; 29.11.2011
comment
также - для меня допустимо значение null, а ноль - другое значение, поэтому я не могу по умолчанию установить его равным нулю. - person Brady Moritz; 29.11.2011
comment
Извините, кажется, я неправильно понял вопрос. Установлены ли у вас какие-либо пользовательские шаблоны в ~/Views/Shared/EditorTemplates? Похоже, это проблема привязки элемента модели, допускающего значение NULL, к представлению. - person mattypiper; 29.11.2011
comment
Кроме того, вы можете опубликовать код своей ViewModel? У вас есть обнуляемый int в определении вашей модели, верно? Я думаю, у вас есть несоответствие между тем, что вы передаете в представление, и тем, что ожидает представление. - person mattypiper; 29.11.2011
comment
[DisplayName(Number of Stores (если применимо))] public Nullable‹int› NumOfStores { get; установлен; } - person Brady Moritz; 29.11.2011
comment
К сожалению, я не могу воспроизвести эту проблему в демонстрации, которую я собрал, используя типы значений, допускающие значение NULL, и шаблоны редактирования по умолчанию. Если вы закомментируете строки 275 и 276, проблема исчезнет? Вы пытались установить точку останова непосредственно в представлении на 275 и проверить модель с помощью отладчика Visual Studio? Извините, просто пытаюсь придумать идеи, которые помогут вам на этом этапе. - person mattypiper; 30.11.2011
comment
У меня нет созданных пользовательских шаблонов редактора (я хочу убедиться, что в этом более крупном проекте ничего не спрятано). - person Brady Moritz; 30.11.2011
comment
Я прокомментировал этот элемент, и он выдает ошибку в следующем поле int, допускающем значение NULL. Прокомментировал это, а затем выдает ошибки в следующем двойном поле, допускающем значение NULL. поэтому кажется, что любые типы значений, допускающие значение NULL, взрываются. Просто сумасшедший... - person Brady Moritz; 30.11.2011
comment
Вы пытались указать имя шаблона, как предложил мой ответ? Кроме того, дважды проверьте правильность настройки представления Inherits=ViewPage‹Model›. - person mattypiper; 30.11.2011
comment
У меня этот же проект открыт в более ранней версии, я запускаю его, и он работает нормально. Так что что-то в этой новой версии все портит. Я должен попытаться изолировать некоторые вещи, кажется... - person Brady Moritz; 30.11.2011

Я добавил пользовательские шаблоны редактора для int32 и double, чтобы заставить это работать. Я понял, что в проект, с которым я работаю, добавлены элементы управления телериком, поэтому я подумал, что не знаю, как отлаживать вещи, похоже, они каким-то образом связаны с шаблонами по умолчанию.

person Brady Moritz    schedule 30.11.2011