цель для <страницы enableEventValidation = “ложь”>

Я рекомендовал бы изменить Ваш дизайн для включения некоторого поля состояния в A.

проблемой является один из "почему?" Почему делает A, имеют < 2 B и почему делает A, имеют> = 2 B. Это, потому что пользователь не ввел что-то? Или то, потому что они попробовали, и их вход имел ошибки. Или он потому что < 2 правила не применяются в этом случае.

Используя присутствие или отсутствие Внешнего ключа ограничивает значение - хорошо - подарок или отсутствующий. У Вас нет способа представить "почему?"

кроме того, у Вас есть следующая опция

[ a for a in A.objects.all() if a.b_set.count() < 2 ]

, Это может быть дорого, потому что она действительно выбирает весь A, а не вынуждает базу данных сделать работу.

<час>

Редактирование: Из комментария "потребовал бы, чтобы я наблюдал за пользовательским соединением / пользователь, оставляющий события пула".

Вы ничего не "наблюдаете" - Вы обеспечиваете API, который делает то, в чем Вы нуждаетесь. Это - центральное преимущество модели Django. Вот один путь с explict методами в A класс.

class A( models.Model ):
    ....
    def addB( self, b ):
        self.b_set.add( b )
        self.changeFlags()
    def removeB( self, b ):
        self.b_set.remove( b )
        self.changeFlags()
    def changeFlags( self ):
        if self.b_set.count() < 2: self.show= NotYet
        else: self.show= ShowNow

можно также определить специальное предложение Manager для этого и заменить значение по умолчанию b_set менеджер с менеджером, который считает ссылки и обновляет A.

23
задан Robert 1 October 2009 в 12:18
поделиться

2 ответа

Read the documentation.

EDIT: For security reasons, it's probably best to leave it set to true wherever you can.

I would therefore recommend that you set it to false only on the individual AJAX pages where it causes problems, while leaving it true in web.config.

14
ответ дан 29 November 2019 в 02:51
поделиться

Из здесь

Недопустимая ошибка аргумента PostBack или CallBack в основном возникает из-за функции проверки событий. Функция EventValidation - это новая функция в ASP.NET 2.0, которая обеспечивает дополнительный уровень проверок, чтобы убедиться, что обратная передача от элемента управления на клиенте действительно исходит от этого элемента управления, а не от кого-то злоумышленника, использующего что-то вроде межсайтовой инъекции сценария пытаться манипулировать вещами. Это часть нашей общей стратегии все более глубокого добавления уровней безопасности в модель программирования, чтобы разработчики могли быть в безопасности по умолчанию, даже если они забыли добавить собственные проверки безопасности.

Теперь, Недопустимая ошибка аргумента PostBack или CallBack может возникать, когда вы запускаете событие щелчка, и объект повторно связывается, или его свойства изменяются в событии Page_Load, или кто-то пытается взломать вашу систему с помощью межсайтового скриптинга. Каждый раз. Net Framework отображает страницу, а затем связывает уникальный Guid для всех элементов управления. При привязке gridview или повторителя к каждой структуре привязки данных будет ассоциироваться новый guid для contorl. Поэтому каждый раз, когда вы запускаете событие, убедитесь, что событие Page_Load не изменяет элемент управления, потому что, если элемент управления изменил его, у него будет другой Guid, который фактически запустил событие для обратной передачи. Вот несколько сценариев с этой ошибкой.

1) Недействительный аргумент обратной передачи или обратного вызова в GridView. Проблема может быть: Вы связываете данные в событии Page_Load либо с источником данных объекта, либо с ручным связыванием с вызовом функции. Это заставит ваш GridView связывать данные при каждом возникновении события любого элемента управления. Когда вы запускаете любую команду GridView с помощью OnRowCommand, перед запуском RowCommand ваш GridView будет повторно привязан, и все элементы управления в нем будут назначены новому идентификатору. Таким образом, RowCommand не может получить элемент, вызвавший событие. Решение для недопустимого аргумента обратной передачи или обратного вызова в GridView: вы можете привязать свои данные к этому условию if

   if (!IsPostBack)

   {

          //Your code for Bind data 

   }

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

перед запуском RowCommand ваш GridView будет повторно привязан, и весь элемент управления в нем будет назначен новому идентификатору. Таким образом, RowCommand не может получить элемент, вызвавший событие. Решение для недопустимого аргумента обратной передачи или обратного вызова в GridView: вы можете привязать свои данные к этому условию if

   if (!IsPostBack)

   {

          //Your code for Bind data 

   }

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

перед запуском RowCommand ваш GridView будет повторно привязан, и весь элемент управления в нем будет назначен новому идентификатору. Таким образом, RowCommand не может получить элемент, вызвавший событие. Решение для недопустимого аргумента обратной передачи или обратного вызова в GridView: вы можете привязать свои данные к этому условию if

   if (!IsPostBack)

   {

          //Your code for Bind data 

   }

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

7
ответ дан 29 November 2019 в 02:51
поделиться
Другие вопросы по тегам:

Похожие вопросы: