2012-09-13 54 views
2

我的ascx頁面不可用:ASP:面板RUNAT = 「服務器」,在C#的.cs代碼頁

<%@ Control Language="c#" Inherits="FSB.Layouts.Short_Home_Loan_Application" CodeBehind="Short Home Loan Application.ascx.cs" %>  
<div class="form"> 
<form action="" method="post" rel="shortForm"> 
    <div class="section">   
     <asp:panel id="shortForm_wrapper" runat="server"> 
      this is the first panel 
     </asp:panel> 
     <asp:Panel runat="server" ID="thankYouWrapper" >this is the second panel</asp:Panel> 
    </div>  
</form> 
</div> 

<sc:sublayout runat="server" path="~/layouts/FSB/Document Checklist Lightbox.ascx" id="checklist" /> 

我的CS頁:

using System; 
using Sitecore.Data.Items; 
using Sitecore.Links; 
using Sitecore.Data.Fields; 
using Sitecore.Web.UI.WebControls; 
using System.Net; 
using FSB.Helpers; 
using System.Configuration; 
using System.Text; 
using System.Web; 
using System.Web.SessionState; 

namespace FSB.Layouts { 

    public partial class Short_Home_Loan_Application : System.Web.UI.UserControl {  

     protected void Page_Load(object sender, EventArgs e) { 
      thankYouWrapper // not accessible here 
     } 
    } 
} 

注:這是一個CMS項目並使用Sitecore。我實際上並不知道這會有什麼幫助。我對C#完全陌生,並被拋入C#網站。

預先感謝

+0

CodeBehind =「Short Home Loan Application.ascx.cs」頁面名稱後面的代碼實際上是否有空格?你可以刪除它們嗎? –

+0

還是可以使用其他控件是後面的代碼? –

+0

@benni_mac_b實際上頁面名稱包含空格 – Champ

回答

0

在你的ASCX頁標題,修改繼承指令,包括後面的代碼中的命名空間前綴。

修訂

我已經採取了原來的標記張貼並把它放在一個測試Web應用程序,它使用VS2010適當提供代碼隱藏引用完全編譯。

這個控件最初是用不同的名字,不同的命名空間創建的,還是從不同的項目中複製並粘貼到這個項目的shell源文件中?您遇到的問題似乎直接與ASP.NET在後臺生成的中間文件的缺失有關,以建立基於標記的實體的受保護聲明,這些聲明可在控件來源的代碼隱藏中引用。如果出於某種原因,VS2010無法檢測到需要重新生成這些中間文件,則標記和源將失去同步並且失敗的方式與您所遇到的類似。我顯然不能保證這是你的特定問題的原因,但我至少會認爲它是一個強烈的嫌疑犯。

我會恭敬地建議你創建中的VS2010完全新的控制,通過「添加新用品 - >」選項,在Solution Explorer,並添加只是標記從該控件到ASCX文件(而不是指令行),然後查看該新控件的代碼隱藏是否可以引用服務器端元素。

祝你好運。

+0

Inherits =「FSB.Layouts.Short_Home_Loan_Application」聽到FSB.Layouts。是命名空間 – Champ

+0

懷疑設計器文件已損壞。我會刪除現有的源代碼,並重新開始這個控制。 –

+0

我在我的問題中添加了一個註釋,可能會有所幫助 – Champ

0

使用 「的CodeFile」,而不是 「代碼隱藏」

<%@ Control Language="C#" Inherits="FSB.Layouts.Short_Home_Loan_Application" CodeFile="Short Home Loan Application.ascx.cs" %> 
0

您可以調整論文元素:

1的CodeFile

CodeFile="Short_Home_Loan_Application.ascx.cs" %> //AddCodeFile, and set the same name 

2的Runat

添加runat="server"到您的形式

3用Div替換您的面板容器

3

我假設您有一個Web應用程序項目而不是WebSite項目。因此,在解決方案資源管理器中,導航到您的*.ascx文件,將其展開以查看C#代碼隱藏,並且您還將看到一個*.ascx.designer.cs文件。刪除該「設計器」文件。接下來,右鍵單擊您的*.ascx文件並選擇轉換爲Web應用程序,這將重新生成設計器文件。現在嘗試通過C#訪問控件。

相關問題