2009-05-13 7 views
2

Je me demandais si quelqu'un connaissait un moyen de faire une validation côté client avec jquery et ensuite exécuter l'événement de publication manuellement pour un contrôle asp.net?Validation avant l'événement Postback sur la page Master Asp.net

Voici un exemple de page Master -à-dire

<script type="text/javascript"> 
$(document).ready(function() { 
    $("#<%=lnkbtnSave.ClientID %>").click(function() { 
     alert("hello"); 
     // Do some validation 
     // If validation Passes then post back to lnkbtnSave_Click Server side Event 
     }); 
}); 
</script> 
<asp:LinkButton ID="lnkbtnSave" runat="server" onclick="lnkbtnSave_Click" ><asp:Image ID="Image3" runat="server" ImageUrl="~/images/save.gif" AlternateText="Save" />Save</asp:LinkButton> 

Maître Page Code du Derrière

public delegate void MasterPageMenuClickHandler(object sender, System.EventArgs e); 
    public event MasterPageMenuClickHandler MenuButton; 

    protected void lnkbtnSave_Click(object sender, EventArgs e) 
    { 
     // Assign value to public property 
     _currentButton = "Save"; 

     // Fire event to existing delegates 
     OnMenuButton(e); 
    } 

    protected virtual void OnMenuButton(EventArgs e) 
    { 
     if (MenuButton != null) 
     { 
      //Invokes the delegates. 
      MenuButton(this, e); 
     } 
    } 

Contenu Code Page derrière

protected void Page_Load(object sender, EventArgs e) 
{ 
     Master.MenuButton += new Form.MasterPageMenuClickHandler(Master_MenuButton); 
} 

void Master_MenuButton(object sender, EventArgs e) 
    { 
     switch (Master.CurrentButton) 
     { 
      case "Save": 
       Save(); 
       break; 
      case "New": 
       Response.Redirect("ContentPage.aspx"); 
       break; 
      default: 
       break; 
     } 
    } 

également le lnkbtnSave de commande est dans une page maître si comment puis-je déterminer quelle page de contenu je suis depuis chaque pa de contenu ge aura ses propres contrôles à valider.

Merci pour toute aide

Répondre

2

Pour la première question, vous devriez pouvoir renvoyer true pour que le bouton de liaison soit renvoyé et retourner false pour l'arrêter.

$(document).ready(function() {  
    $("#<%=lnkbtnSave.ClientID %>").click(function() {   
     alert("hello");   
     var isValid = false; 
     // Do some validation 
     return isValid; 
    }); 
}); 

Pour votre deuxième question, vous pourriez avoir chaque page ajouter leur propre version du script de validation, et ont la fonction dans le masterpage utiliser pour déterminer la validité:

Maître Page:

$(document).ready(function() {  
    $("#<%=lnkbtnSave.ClientID %>").click(function() {     
     return pageIsValid(); 
    }); 
});  

contenu page:

function pageIsValid() { 
     var isValid = false; 
     //validation logic 
     return isValid; 
    } 
+0

Merci Jimmie! Je n'ai jamais su que tu pouvais faire ça. – zSynopsis

4

Si vous regardez en arrière, il pourrait être simplifiée. Au lieu de valider et d'initier la publication, vous pouvez valider et empêcher la publication si nécessaire.

$('#<%= lnkbtnSave.ClientID %>').click(function(e) { 
    if (!validate()) { 
     e.preventDefault(); //will stop the page from posting back. 
    } 
}); 

Si vous avez vraiment besoin de lancer le postback (et de le faire dans l'autre sens), vous pouvez appeler explicitement la fonction __doPostBack() que ASP.NET met sur la page pour vous après avoir fait votre validation. Faites-moi savoir si l'un de ces éléments nécessite des éclaircissements.

+0

Merci, je vais essayer! – zSynopsis

Questions connexes