Почему .NET отображает javascript для кнопки, когда на странице есть специальный валидатор? - PullRequest
0 голосов
/ 01 февраля 2011

У меня два вопроса - во-первых, почему .net отображает событие javascript onclick для кнопок asp, когда на той же странице есть пользовательский валидатор, и, во-вторых, как мне избавиться от javascript?

Он прекрасно работает, когда javascript выключен, поэтому я не знаю, в чем суть. Вот небольшой пример:

<form id="form1" runat="server">

    <asp:Button ID="Button1" OnClick="Button1_Click" Text="test" runat="server" />

    <asp:CustomValidator ID="CustomValidator1" runat="server" 
        OnServerValidate="Stuff_Validate" EnableClientScript="false">
    </asp:CustomValidator>

</form>

Будет сгенерирован следующий HTML-код для кнопки:

<input type="submit" name="Button1" value="test" onclick="javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(&quot;Button1&quot;, &quot;&quot;, true, &quot;&quot;, &quot;&quot;, false, false))" id="Button1" />

Без пользовательского валидатора это:

<input type="submit" name="Button1" value="test" id="Button1" />

Есть идеи?

Спасибо

Annelie

Ответы [ 2 ]

0 голосов
/ 02 февраля 2011

Если вы посмотрите на то, что System.Web.UI.WebControls.Button показывает, почему:

В GetPostBackOptions(), если у вас есть какие-либо валидаторы на странице (в текущей группе валидации), то она сгенерирует скриптдля обратной передачи.

Затем в AddAttributesToRender(), если присутствуют какие-либо сценарии, они отображаются в событии onclick.

Если вам нужно обойти это, то вы собираетесьдолжны построить пользовательскую кнопку

0 голосов
/ 02 февраля 2011

Javascript добавлен, потому что пользовательская проверка выполняется с помощью JavaScript.Это должно быть там.Как вы думаете, проверка сделана?Если вы избавитесь от JavaScript, проверка не будет работать.

...