Обойти проверку на стороне клиента mvc 3 - PullRequest
1 голос
/ 30 августа 2011

Это модель, которую мы используем ...

Public Class Person
{
        [Display(ResourceType = typeof(BasicTags), Name = "FirstName")]
        [Required(ErrorMessageResourceName = "FirstNameRequired", ErrorMessageResourceType = typeof(BasicErrors))]
        public string FirstName;

        [Display(ResourceType = typeof(BasicTags), Name = "LastName")]
        [Required(ErrorMessageResourceName = "LastNameRequired", ErrorMessageResourceType = typeof(BasicErrors))]
        public string LastName;
}

Оба поля установлены как обязательные true.Теперь у нас есть другой разработчик, использующий эту же модель в другом представлении, он не хочет эту проверку для своей страницы, как пропустить проверку на стороне сервера и перед сохранением?

Поля базы данных установлены как допустимые пустые значения.

ViewData.ModelState.Remove("FirstName") 
ViewData.ModelState.Remove("LastName")

Это удаляет только сообщение на стороне клиента, но фактическая проверка все еще остается.Есть ли способ, чтобы я мог сохранить.

Спасибо.

Ответы [ 3 ]

2 голосов
/ 30 августа 2011

Вы должны создать пользовательскую модель представления, которая имеет эти свойства, но не имеет аннотаций проверки для этой конкретной страницы.

1 голос
/ 30 августа 2011

Просто не проверяйте ModelState.IsValid на стороне сервера и сохраняйте свои данные.

ОДНАКО - Я бы просто сделал копию этой модели представления, удалил ваши атрибуты и покончил бы с этим.ViewModel для View - если у вас есть другое представление, стандартная вещь, которую нужно сделать, это создать новую модель.Тем не менее, это ваше приложение, поэтому решение сделать то, что вы хотели, выше.

Если вы беспокоитесь о проверке на стороне клиента, то вам нужно создать свой собственный обработчик для функции отправки и не проверятьесли он действителен - просто отправьте.Еще один взлом.Итак - еще раз .. постарайтесь не делать это таким образом.:)

0 голосов
/ 25 июня 2012

Вы также можете позвонить ModelState.Remove("FirstName");

До ModelState.IsValid и это сделает свое дело, Как

ModelState.Remove("FirstName");
if(ModelState.IsValid){
     // your code
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...