Вы также можете использовать метод compareTo()
для сравнения двух строк. Если результат compareTo равен 0, то две строки равны, в противном случае сравниваемые строки не равны.
==
сравнивает ссылки и не сравнивает фактические строки. Если вы создали каждую строку, используя new String(somestring).intern()
, вы можете использовать оператор ==
для сравнения двух строк, в противном случае могут использоваться только методы equals () или compareTo.
в файле aspx вы должны поместить первую строку следующим образом:
<%@ Page EnableEventValidation="false" %>
, если у вас уже есть что-то вроде <%@ Page
, поэтому просто добавьте rest => EnableEventValidation="false" %>
Я рекомендую не делать этого.
Ах, к сожалению. Поскольку вы добавляете их по существу, клиентская сторона asp.net взрывается. К сожалению, вам придется отключить EventValidation, так как есть некоторые важные меры защиты, которые помогают (например, инъекция зла в выпадающие окна). Другой альтернативой является создание собственного составного элемента управления, что, конечно, здесь кажется немного более сложным. Я бы попытался выключить проверку событий, но будьте очень осторожны, чтобы вы не доверяли никаким значениям на странице, которые могли бы быть использованы плохо, просто меняя их - например, скрытые ключи, SQL-инъекцию через комбинированные поля и т. Д.
, если вы измените UseSubmitBehavior="True"
на UseSubmitBehavior="False"
, ваша проблема будет решена.
<asp:Button ID="BtnDis" runat="server" CommandName="BtnDis" CommandArgument='<%#Eval("Id")%>' Text="Discription" CausesValidation="True" UseSubmitBehavior="False" />
Моя проблема заключалась в том, что у меня были вложенные теги формы. После удаления внутренней, разработанной для меня.
Вероятно, это не причина вашей проблемы, но я заметил, что вы использовали optgroups в своем раскрывающемся списке, поэтому я решил, что это может помочь кому-то, если они завершатся здесь с этой проблемой. Для меня мне нужно было создать раскрывающийся список, который будет отображать с помощью optgroups, и я в конечном итоге использовал принятый ответ здесь , но пока он корректно отобразил элемент управления, он дал мне эту ошибку. Как я прошел, это подробно описано в моем ответе здесь .
У меня была такая же проблема с datalist, я динамически связываю, добавив EnableViewState = "false", успокоил сообщение об ошибке. Я полагаю, что если я привязываюсь программно, тогда элемент управления заполняется на каждом столбце назад, вид состояние не должно поддерживаться, если оно может или не может измениться при каждом обратном вызове, поэтому я динамически связываю его, lol.
У меня была аналогичная проблема из-за копирования пасты с другой страницы, что я получил:
<form id="form1" runat="server">
...
<form id="form2" runat="server">
....
</form>
</form>
Я просто удалил форму с id = "form2" внутри формы с id = "form1" и выпустил прошло. Это может быть не ваша проблема, но может быть что-то подобное.
Эта ошибка также может быть вызвана вложенным тегом <form>
на главной странице, которая не разрешена.
<form id="someid"></form>
Это, вероятно, будет причиной, если вы выбрали шаблон и скопировали код откуда-то.
Вы должны разбейте вложенность тега <form>
. Следующее должно стать
<form method="" name="form1">
<form method="" name="form2>
</form>
</form>
должно стать
<form method="" name="form1">
</form>
<form method="" name="form2>
</form>
form
не может быть вложенным.
– Hammad Khan
9 September 2017 в 08:08
Вы можете добавить ViewStateMode = "Disabled"
asp: UpdatePanel ID = "UpdatePanel1" runat = "server" ViewStateMode = "Disabled"
Добавить на верхнюю страницу
protected void Page_Load(object sender, EventArgs e)
{
if (!Page.IsPostBack)
{
//Code display data
}
}
У меня была та же проблема, два списка и две кнопки.
Данные в списках загружались из базы данных, и вы могли перемещать элементы между ячейками, нажимая кнопки.
Я получил недопустимую обратную передачу.
выясняет, что в нем были данные с каналами возврата каретки, которые вы не видите при отображении в списке.
работал отлично в каждом браузере, кроме IE 10 и IE 11.
Удаляет каналы возврата каретки и все работает нормально.
Вы также можете заполнить свои данные в событии prerender. Таким образом, вы можете сохранить свою проверку и оставаться в безопасности. Вот пример использования ретранслятора.
protected void Page_PreRender(object sender, EventArgs e)
{
List<Objects.User> users = Application.User.GetAllUsers();
Repeater1.DataSource = users;
Repeater1.DataBind();
}
После этой проблемы на удаленных серверах (production, test, qa, staging и т. д.), но не на локальных рабочих станциях разработки, я обнаружил, что пул приложений был настроен с RequestLimit, отличным от 0.
Это заставило пул приложений отказаться от ответа и ответить с исключением, указанным в вопросе.
Где-то в пути, когда мой проект установочного экрана изменил определение своего пула приложений на использование «3» (возможно, щелчок или неправильный тип).
Если у вас есть код в вашем Page_Load () событии. Попробуйте добавить это:
if (!Page.IsPostBack)
{
//your code here
}
Еще одна вещь, о которой следует помнить, заключается в том, что эта ошибка может произойти, если у вас есть вложенный тег
<form
в форме .Net.
Моим решением было добавить:
ctlUpdatePanel.Update();
после привязки управления после обратной передачи. это было в обновлении с атрибутом UpdateMode = "Условный".