контроль валидации asp.net вызывает «случайную» ошибку в javascript - PullRequest
1 голос
/ 05 февраля 2010

У меня есть asp:FormView на элементе управления (в файле ascx), который загружается на страницу портала вместе с некоторыми другими элементами управления.

Мне нужно добавить проверку в форму, но когда я добавляю какой-либо из элементов управления проверкой, я получаю явно случайную ошибку в сгенерированном JavaScript при загрузке страницы, и проверка не запускается, когда мне это нужно.

Вот код, который у меня есть:

<asp:TextBox ID="FPITextBox4" runat="server" Text='<%# Bind("SomeNumber") %>'></asp:TextBox>
<asp:RangeValidator ID="RangeValidator4" runat="server" ControlToValidate="FPITextBox4" Text="*"
    ErrorMessage="The number must be a whole number between 0 and 100,000" Type="Integer"
    MaximumValue="100000" MinimumValue="0" ToolTip="Must be between 0 and 100,000"></asp:RangeValidator>

Это ошибка, которую я получаю при загрузке страницы:

Message: Expected ';'
Line: 1159
Char: 60
Code: 0

Когда я смотрю на строку 1159 в сгенерированном коде, она выглядит так:

var ctl00_ctl00_main_col2_control_0_widgetcontrolX_3eba4918-7c7d-47aa-a089-
fd0ead0609fe_widgetcontrol_3eba4918-7c7d-47aa-a089-
fd0ead0609fe_FormView1_RangeValidator4 = document.all ?
document.all["ctl00_ctl00_main_col2_control_0_widgetcontrolX_3eba4918-7c7d-47aa-a089-
fd0ead0609fe_widgetcontrol_3eba4918-7c7d-47aa-a089-
fd0ead0609fe_FormView1_RangeValidator4"] :
document.getElementById("ctl00_ctl00_main_col2_control_0_widgetcontrolX_3eba4918-7c7d-
47aa-a089-fd0ead0609fe_widgetcontrol_3eba4918-7c7d-47aa-a089-
fd0ead0609fe_FormView1_RangeValidator4");

Код сразу над этим:

<script type="text/javascript"> 
//<![CDATA[
var Page_Validators =  new Array(document.getElementById(
"ctl00_ctl00_main_col2_control_0_widgetcontrolX_3eba4918-7c7d
-47aa-a089-fd0ead0609fe_widgetcontrol_3eba4918-7c7d-47aa-a089-
fd0ead0609fe_FormView1_RangeValidator4"));
//]]>
</script>

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

Похоже, что ошибка происходит только в IE 8. Я протестировал ту же страницу в Firefox 3.6, и все работает как положено.

Исправление

Похоже, что проверка работает. У меня был ValidationSummary элемент управления, чтобы показать окно сообщения, и оно не появлялось, что заставило меня поверить, что проверка не была запущена. Когда я изменил это на ShowSummary="true" ShowMessageBox="false", сообщение об ошибке действительно появилось, и данные не сохранены.

Таким образом, все, что теперь означает, - это то, что у меня произошла случайная ошибка сценария, которая (на данный момент), похоже, не влияет на работу страницы.

Однако я все еще хотел бы удалить ошибку - на случай, если она что-то скрывает.

Ответы [ 2 ]

3 голосов
/ 04 марта 2010

вы действительно нашли ошибку в коде генерации клиента .Net - посмотрите на http://haacked.com/archive/2006/07/14/ASP.NET2.0ClientValidationJavascriptBug.aspx

Но нет разрешения от M $ - вам придется генерировать идентификаторы другим способом ...

0 голосов
/ 05 февраля 2010

Я обнаружил, что этот тип ошибки возникает из-за ошибки в одном из моих сценариев, где отсутствует; У вас есть код JS на вашей странице, и все ли это правильно, нет пропущенных точек с запятой?

НТН.

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