Привет,
Я создаю приложение ASP.NET MVC и у меня возникли проблемы с обработкой данных.
Одно из моих действий выглядит так:
public ActionResult Register(int categoryId, int? filterId)
Это действие будет создавать экземпляр формы регистрации, и в этом случае это означает загрузку пользовательского объекта ViewModel с данными из БД ( Entity Framework ) и отправку его в строго типизированное представление.
Чтобы перевести объект модуля в объект просмотра, который я использую AutoMapper
Когда пользователь изменил данные и нажал "Отправить", будет запущено следующее действие:
[CustomAuthorize(Roles = SiteRoles.Admin)]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Register(ModelViewRegisterFilter filter)
Это действие запустит следующий код:
if(filter.EditingFilter.Id > 0)
adCategoryFilter = Mapper.Map<RegisterFilterItem, AdCategoryFilter>(filter.EditingFilter, filterModel.GetFilter(filter.EditingFilter.Id));
else
adCategoryFilter = Mapper.Map<RegisterFilterItem, AdCategoryFilter>(filter.EditingFilter);
AdCategoryFilter - это класс из Model (db).Когда это сделано, не должно быть никаких проблем с сохранением объекта модели сущности (adCategoryFilter).
Проблема 1 У меня есть поле в таблице БД, которое называется DisplayCheckBox и имеет тип nullable tinyint,Чтобы представить это, я создал недействительный bool в моем объекте просмотра.При использовании AutoMapper для перевода из Model в ModelView я получаю следующее исключение:
Попытка сопоставить System.Byte с System.Nullable`1 [[System.Boolean, mscorlib, Version = 4.0.0.0, Культура = нейтральная, PublicKeyToken = b77a5c561934e089]].Использование конфигурации сопоставления для Biss.Models.Model.AdCategoryFilter для Biss.Views.ViewClasses.RegisterFilterItem Свойство назначения: DisplayCheckBox Исключение типа 'AutoMapper.AutoMapperMappingException' было сгенерировано.
Я проверял сгенерированное свойствокласс модели и выглядит так:
Nullable<global::System.Byte>
Задача 2 Когда форма отправлена, объект viewmodel будет заполнен данными из формы.Если существует textBox со значением "" (string.empty), тогда строка будет иметь значение null.
Поле db, представляющее это текстовое поле, имеет тип nchar (100), и это генерируетсяструктурой сущности в строку.Проблема заключается в том, что automapper попытается установить нулевое значение для свойства DisplayTextBox объекта модели, и это вызовет исключение:
Это свойство не может быть установлено в нулевое значение.
Пожалуйста, совет.