2010-03-12 8 views
1

Qu'est-ce que je fais mal? Je tiens LinkButton et je reçois cette erreur'System.Web.UI.Control.Controls' est une 'propriété' mais est utilisée comme un 'type'

Compilation Error Description: An error occurred during the compilation of a resource required to service this request. Please review the following specific error details and modify your source code appropriately.

Compiler Error Message: CS0118: 'System.Web.UI.Control.Controls' is a 'property' but is used like a 'type'

Source Error:

Line 1084: Line 1085:
public void @__DataBinding__control30(object sender, System.EventArgs e) { Line 1086:
ConfirmButton.Controls.ConfirmLinkButton dataBindingExpressionBuilderTarget; Line 1087:
System.Web.UI.IDataItemContainer Container; Line 1088:
dataBindingExpressionBuilderTarget = ((ConfirmButton.Controls.ConfirmLinkButton)(sender));

Ceci est du code C#:

[Localizable(true)] 
public string Message 
{ 
    get { return ViewState["Message"] as string; } 
    set { ViewState["Message"] = value; } 
} 

#region Overriden 
protected override void OnPreRender(EventArgs e) 
{ 
    if (!String.IsNullOrEmpty(Message)) 
    { 
     WebControlUtils.SetConfirmationMessage(Page, typeof (Page), this, Message, Page.IsAsyncPostBack(), 
               CausesValidation); 
    } 
    base.OnPreRender(e); 
} 

#endregion 

ASPX CODE:

<asp:TemplateField> 
     <ItemTemplate> 
      <asp:ConfirmLinkButton ID="lnkBtnDelete" runat="server" Text="Odstrani" Message="Delete?"         

       CommandName="DeleteAgencie" Width="50" 
       CommandArgument='<%# Eval("idAgencies") %>' 
       OnCommand="lnkBtnDelete_Command" CausesValidation="False"></asp:ConfirmLinkButton> 
     </ItemTemplate> 
    </asp:TemplateField> 

C#

public static bool IsAsyncPostBack(this Page page) 
{ 
    var result = false; 
    var scriptManager = ScriptManager.GetCurrent(page); 
    if (scriptManager != null) 
    { 
     result = scriptManager.IsInAsyncPostBack; 
    } 

    return result; 
} 




public static void SetConfirmationMessage(Page page, Type type, Control control, string message, 
              bool isAsyncPostBack, bool causesValidation) 
{ 
    string script = "SetConfirmation('" + control.ClientID + "','" + message + "'," + 
        causesValidation.ToString().ToLower() + ");"; 
    if (isAsyncPostBack) 
    { 
     ScriptManager.RegisterStartupScript(page, typeof (Page), control.ClientID, script, true); 
    } 
    else 
    { 
     page.ClientScript.RegisterStartupScript(type, control.ClientID, script, true); 
    } 
} 

Cordialement

+2

Besoin de votre bloc complet de code, ce qui précède est incomplète. Impossible de voir où s'ouvre par exemple. – Gabe

Répondre

1

Essayez

Page.IsAsyncPostBack 

Page classe a une propriété: Page.IsPostBack. vous ne devez pas utiliser () pour accéder à une propriété de n'importe quelle classe. C'est la raison pour laquelle vous obtenez cette erreur.

+0

ouais les perdre bretelles. – gingerbreadboy

+0

pouvez-vous nous dire, quel espace-nom est cette classe de: 'WebControlUtils' –

+0

Asad Butt exactement. namespace WebControlUtils – senzacionale

0

Il semble que vous ayez un contrôle nommé 'ConfirmButton' dans l'espace de noms local. Vous devez renommer ce contrôle, car cet identifiant est déjà utilisé comme nom d'espace de nom.

+0

oui le nom de contrôle est ConfirmButton – senzacionale

+0

Il essaye de lancer un élément pour taper 'ConfirmButton.Controls.ConfirmLinkButton', donc vous avez un espace de noms racine avec le nom 'ConfirmButton' et un contrôle avec l'identificateur' ConfirmButton'. Vous ne devez pas utiliser un nom d'espace de nom comme identifiant d'un objet ou vous rencontrerez des problèmes comme celui-ci. – Jake

+0

Jake thx beaucoup. Problème trouvé et résolu! – senzacionale

Questions connexes