Я часто обнаружил, что исправляю валидации для модели model вручную вручную из-за несогласованности некоторых полей, которые требуются в модели представления во время сообщение и получить.MVC ViewModel, используя виртуальную машину с определенными свойствами, отмеченными как обязательные, в зависимости от того, является ли ее GET или POST
Предположим, у меня есть этот вид Модель:
public class RestaurantMenuName_ViewModel
{
public Int64 RestaurantMenuNameId { get; set; }
public Int64 OwnerId{ get; set; }
public string MenuNameCategory { get; set; }
public string CategoryDescription { get; set; }
public bool IsFormSaved { get; set; }
}
Во время запроса GET контроллер/действие требует проверку только на полях, RestaurantMenuNameId и OwnerId. При вызове ActionMenuName Action значение строки запроса - RestaurantMenuNameId и OwnerId. ModelState проверка будет осуществляться на:
- RestaurantMenuNameId
- OwnerId
Во время POST запроса контроллер/действие потребует ModelState проверки полей:
- RestaurantMenuNameId
- Уместно
- MenuNameCategory
- CategoryDescription
Это проблема несогласованности я говорю, решение может быть с помощью ViewModel для Get запросов и один за сообщение, но это может быть реальным расточитель времени и подвержен ошибкам , Использование ViewBag не обсуждается.
Вопрос: Есть ли способ сказать MVC, что мы хотим, чтобы некоторые поля [необходимы] для GET и других для POST?
Ниже приводится Псевдо-код, что я говорю о:
public class RestaurantMenuName_ViewModel
{
[Required: in GET, POST] //<--Pseudo code
public Int64 RestaurantMenuNameId { get; set; }
[Required: in GET, POST] //<--Pseudo code
public Int64 OwnerId { get; set; }
[Required: in POST] //<--Pseudo code
public string MenuNameCategory { get; set; }
[Required: in POST] //<--Pseudo code
public string CategoryDescription { get; set; }
public bool IsFormSaved { get; set; }
}
Вы передаете сложные объекты методам GET? Если так, не делайте этого! Ваш параметр должен быть просто 'id' –
@Stephen Muecke, да, я знаю, но есть некоторые особые случаи, когда передача сложного объекта в GET - это плохая практика, но более практичная. – Luther
Почему вы хотите передать сложный объект в get, просто передайте требуемые идентификаторы – 3dd