2017-07-08 5 views
2

J'ai créé un contrôle simple qui utilise un panneau de mise à jour avec un déclencheur de clic de bouton et oui un gestionnaire de script au-dessus du contrôle. Cliquez sur le bouton et une étiquette est mise à jour avec l'heure actuelle et cela a bien fonctionné pendant 6 anspanneau de mise à jour webcontrol champ de formulaire requis

Aujourd'hui, j'ai changé la page pour être réactif avec Bootstrap, mais cela n'a rien à voir avec cette question.

Le contrôle a été ajouté à une page qui contient des étiquettes et des zones de texte (formulaire simple avec prénom/nom de famille).

<asp:TextBox ID="txtFirstName" runat="server" CssClass="form-control input-lg" Placeholder="Your First Name" MaxLength="20" Required="true"></asp:TextBox> 

Si je retire:

Required="true" 

et cliquez sur le bouton dans le contrôle des mises à jour de date/heure, mais placer ce retour arrête la mise à jour date/heure. Je dois utiliser à la fois comme je souhaite que le premier nom à être nécessaire, mais aussi pour le temps de mettre à jour

Exemple simple:

<asp:ScriptManager ID="ScriptManager1" runat="server" /> 

<asp:UpdatePanel ID="UpdatePanel1" runat="server"> 
    <ContentTemplate> 
     <asp:Label ID="lblTime" runat="server" Text=""></asp:Label> 
     <asp:Button ID="btnRefreshTime" runat="server" Text="Refresh Time" OnClick="btnRefreshTime_Click" /> 
    </ContentTemplate> 
    <Triggers> 
     <asp:AsyncPostBackTrigger ControlID="btnRefreshTime" EventName="Click" /> 
    </Triggers> 
</asp:UpdatePanel> 

code Derrière:

Protected Sub btnRefreshTime_Click(sender As Object, e As EventArgs) 
    lblTime.Text = DateTime.Now.ToString() 
End Sub 

Qu'est-ce que je fais mal et que dois-je faire pour le résoudre sans ouvrir le formulaire à des abus (attaques de script) etc? Je ne veux pas ajouter ce qui suit à la directive de page:

ValidateRequest="false" 

Nous vous remercions à l'avance

+0

Pouvez-vous mettre à jour votre code HTML pour afficher le formulaire html et où l'entrée requise est sur le formulaire. De plus, 'winforms' n'est pas un tag approprié pour cette question. –

Répondre

0

probabily le bouton événement côté serveur est empêché d'exécuter en raison de la validation du côté client de required = "true".

Essayez de changer le bouton avec quelque chose d'autre qui ne déclenche pas la validation côté client par la conception. J'essaierais avec un LinkButton.

+1

Merci beaucoup pour cette excellente idée. Cela semble fonctionner correctement. J'apprécie vraiment votre aide. C'est bizarre comment l'idée de bouton fonctionne avec la page originale créée dans VS 2010 et pourtant avec le code identique qu'elle veut publier dans VS 2015 mais votre idée semble être la clé. +1 à vous, Isol! –