2

私の ascx ページ:

<%@ 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# Web サイトに放り込まれました。

前もって感謝します

4

4 に答える 4

3

WebSite プロジェクトではなく、Web アプリケーション プロジェクトがあるとします。そのため、ソリューション エクスプローラーで*.ascxファイルに移動し、展開して C# コード ビハインドを表示すると、*.ascx.designer.csファイルも表示されます。その「デザイナー」ファイルを削除します。次に、ファイルを右クリックして [ Web アプリケーションに変換*.ascx]を選択すると、デザイナー ファイルが再生成されます。ここで、C# 経由でコントロールにアクセスしてみます。

于 2012-09-14T18:24:02.420 に答える
0

これらの要素を調整できます:

1コードファイル

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

2ルナト

フォームに追加runat="server"する

Div3パネルをコンテナに交換します

于 2012-09-13T13:19:22.923 に答える
0

ascx ページ ヘッダーで、Inherits ディレクティブを変更して、コード ビハインドに Namespace プレフィックスを含めます。

リビジョン

投稿された元のマークアップを取得し、テスト Web アプリケーションに配置しました。VS2010 を使用して分離コードで利用可能な適切な参照できれいにコンパイルされます。

このコントロールが元々別の名前で別の名前空間で作成されていた可能性はありますか、または別のプロジェクトからコピーされてこのプロジェクトのシェル ソース ファイルに貼り付けられた可能性はありますか? あなたが経験している問題は、コントロールのソースのコードビハインドで参照できるマークアップベースのエンティティの保護された宣言を確立するために、ASP.NET がバックグラウンドで生成する中間ファイルがないことに直接関係しているようです。何らかの理由で、これらの中間ファイルを再生成する必要性を VS2010 が検出できない場合、マークアップとソースが同期しなくなり、発生しているものと同様の方法で失敗します。それがあなたの特定の問題の原因であることを保証することはできませんが、少なくとも有力な容疑者と考えています.

ソリューション エクスプローラーの [新しい項目の追加] オプションを使用して、VS2010 内でまったく新しいコントロールを作成し、このコントロールのマークアップのみを ascx ファイル (ディレクティブ行ではなく) に追加してから、その新しいコントロールのコード ビハインドがサーバー側の要素を参照できる場合。

幸運を。

于 2012-09-13T11:31:29.467 に答える
0

「CodeBehind」の代わりに「CodeFile」を使用する

<%@ Control Language="C#" Inherits="FSB.Layouts.Short_Home_Loan_Application" CodeFile="Short Home Loan Application.ascx.cs" %>
于 2012-09-13T11:46:19.520 に答える