2010-03-12 4 views
1

내가 뭘 잘못하고 있니? 내가하는 LinkButton을 연장하고이 오류를'System.Web.UI.Control.Controls'는 '속성'이지만 '유형'처럼 사용됩니다.

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

이것은 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); 
    } 
} 

감사

+2

전체 코드 블록이 필요하므로 위의 코드는 불완전합니다. 예를 들어이 열리는 위치를 확인하십시오. – Gabe

답변

1

Page.IsAsyncPostBack 

Page 클래스는 속성이 시도 : Page.IsPostBack. ()을 사용하여 모든 클래스의 속성에 액세스하지 않아야합니다. 이 오류가 발생하는 이유입니다.

+0

예. 그 중괄호를 풀어 라. – gingerbreadboy

+0

이 클래스의 네임 스페이스를 알려줄 수 있습니까?'WebControlUtils' –

+0

Asad Butt. 네임 스페이스 WebControlUtils – senzacionale

0

로컬 네임 스페이스에 'ConfirmButton'이라는 컨트롤이있는 것 같습니다. 이 식별자는 이미 네임 스페이스 이름으로 사용되므로이 컨트롤의 이름을 변경해야합니다.

+0

네 제어 이름은 ConfirmButton입니다. – senzacionale

+0

아이템을 ConfirmButton.Controls.ConfirmLinkButton'으로 형변환하려고 했으므로 루트 네임 스페이스가 있습니다. 이름은'ConfirmButton'이고 식별자는'ConfirmButton'입니다. 네임 스페이스 이름을 개체의 식별자로 사용하면 안됩니다. 그렇지 않으면 이와 같은 문제가 발생할 것입니다. – Jake

+0

Jake thx very much. 발견 된 문제와 해결 된 문제! – senzacionale

관련 문제