Question

J'ai deux questions - tout d'abord, pourquoi .net rend un javascript onclick événement pour les boutons asp quand il y a un validateur personnalisé sur la même page, et d'autre part, comment puis-je me débarrasser du javascript

Il fonctionne très bien lorsque javascript est désactivé, donc je ne sais pas ce que le point de c'est. Voici un mini exemple:

<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>

Cela va générer le code HTML suivant pour le bouton:

<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" />

Sans le validateur personnalisé, il est:

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

Toutes les idées?

Merci,

Annelie

Était-ce utile?

La solution

Si vous regardez ce que System.Web.UI.WebControls.Button ne vous pouvez voir pourquoi:

En GetPostBackOptions(), si vous avez des validateurs sur la page (dans le groupe de validation en cours), il va générer un script pour la publication.

Ensuite, dans AddAttributesToRender(), si les scripts sont présents, ils sont rendus dans l'événement onclick.

Si vous devez contourner ce problème, alors vous allez devoir construire un bouton personnalisé

Autres conseils

Le javascript est ajouté parce que la validation personnalisée se fait via javascript. Il est censé être là. Comment pensez-vous que la validation est faite? Si vous êtes débarrassé du javascript la validation ne fonctionnerait pas.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top