2010-10-29 29 views
2

Je reçois une erreur sur javascript lors de la publication. Le code est le suivant:Erreur de rencontre lors d'un post-retour en utilisant __doPostBack()

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="test.aspx.cs" Inherits="test" %> 

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <title>Untitled Page</title> 

    <script language="javascript" type="text/javascript"> 

function DoPostBack() 
{ 
    __doPostBack('Button2','My Argument'); 
} 

    </script> 

</head> 
<body> 
    <form id="form1" runat="server"> 
    <input type="button" id="Button2" value="Press me" onclick="DoPostBack()" /> 
    </form> 
</body> 
</html> 

Je reçois l'erreur suivante:

Line: 13 
Error: Object expected 

Je ne comprends pas pourquoi cette erreur vient. Veuillez nous aider ...

+0

Veuillez noter que j'utilise le bouton HTML ... pas le bouton asp.net – HotTester

+0

@Danil a raison, '_doPostback' n'est pas une fonction magique invisible, il est créé par ASP.NET lorsque les contrôles du serveur sont sur une page qui provoquer une publication. Qu'est-ce que vous essayez de faire ici? Pourquoi ne pouvez-vous pas faire est un bouton côté serveur (asp.net)? – RPM1984

+0

@ RPM1984 Le style de codage actuel ne peut pas être changé dans l'application car il est en cours depuis 7 ans et nous devons le suivre dès maintenant, donc nous ne pouvons pas utiliser le bouton asp.net. – HotTester

Répondre

-1

_doPostBack n'est pas créé par défaut. Il apparaît lorsque vous ajoutez un contrôle avec autoPostBack = true ou en ajoutant une grille avec des boutons. Il n'y a donc pas de _doPostBack javascript généré dans votre code. Si vous ajoutez

<asp:DropDownList ID="list" runat="server" AutoPostBack="true"> 
     <asp:ListItem Text="first"></asp:ListItem> 
     <asp:ListItem Text="second"></asp:ListItem> 
    </asp:DropDownList> 

par exemple votre code fonctionnera. Je ne sais pas si c'est un code vraiment utile :) cependant.

2

vous pouvez utiliser un bouton caché pour effectuer cette tâche

Button1.Attributes.CssAttributes.Add("Display","None"); 

après avoir caché le bouton

vous pouvez appeler sa fonction de clic de javascript

document.getElementById('<%=Button1.ClientID%>').click(); 

cela va appeler Button1_Click sur le serveur

** n'oubliez pas de régler UseSubmitBehaviour=false sur ma ke ce travail sur les navigateurs non IE

espoir qui aide :)

1

__doPostBack est pas créé par défaut. Si la page ne possède pas de contrôle provoquant une publication, ASP.NET ne crée/génère pas cette méthode. Dans votre cas, vous pouvez forcer ASP.NET pour générer __doPostBack en ajoutant la ligne suivante dans votre événement Page_Load:

ClientScript.GetPostBackEventReference(this, string.Empty); 

Cette ligne forcera la création de cette méthode.