2017-08-10 5 views
1

ボックスに情報を表示するウェブサイトを作成中です。 ボックスの組み合わせが異なる複数のページがあります。彼らは共通のボックスをたくさん持っています。 そのため、ボックスをユーザーコントロールとして作成し、別のページに配置します。異なるページは、マスターページも共有します。しかし、2.ボックスの開発を開始するときに問題が発生しました。Page_Load of 2.ユーザーコントロールが実行されない(ウェブサイト)

1.ボックスのPage_Load(またはコード全体)は正常に動作しますが、Page_Loadまたは2.boxは無視されます。これは、aspxファイルをクラッシュさせる多くのnull値になります。

<%@ Page Title="CustType1" Language="C#" MasterPageFile="~/MTCustomer/Master.master" AutoEventWireup="true" CodeFile="CT1.aspx.cs" Inherits="MTCustomer.CT1" %> 

// Some HTML 
    <td ID="column1" style="width: 400px;"> 
     <Box:CustomerInfoBoxAx runat="server" /> 
     <Box:CustomerInfoBoxMt runat="server" /> 
    </td> 
// Some HTML 

私のWeb.configファイルが含まれ、これはユーザーのために使えるように制御します:

<pages> 
    <controls> 
    <add tagPrefix="Box" tagName="InfoBoxA" src="~/Controls/InfoBoxA.ascx" /> 
    <add tagPrefix="Box" tagName="InfoBoxB" src="~/Controls/InfoBoxB.ascx" /> 
    </controls> 
</pages> 

マイユーザーコントロールAのルックス

私CT1.aspxが、これは2人のユーザーコントロールを使用するために含まれていますligeこの:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="InfoBoxA.ascx.cs" Inherits="Controls.InfoBoxA" %> 

<% if (IsVisible("InfoBoxA") && Customer != null) 
    { %> 
    <div> 
     <%-- Markup --%> 
    </div> 
<% } %> 

とボックスBは次のようになります。

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="InfoBoxB.ascx.cs" Inherits="Controls.InfoBoxB" %> 

<link rel="stylesheet" type="text/css" href="<%=VirtualPathUtility.ToAbsolute("~/Styles/InfoBoxStyle.css")%>"> 

<% if (IsVisible("InfoBoxB") && Customer != null) 
    { %> 
    <div> 
     <%-- Markup --%> 
    </div> 
<% } %> 

page.aspxの2つのユーザーコントロールの順序を入れ替えようとしましたが、これもPage_Load(またはコード全体が無視されていました)が無視されました。それに基づいて、最初のコードのみが実行され、残りは無視されるように見えます。

EDIT: 最初のnull参照例外の後に続く例外に従うと、最初のユーザーコントロールのPage.DataBind()がまだ実行中であることがわかります。これは、ボックス1と2の両方のaspxファイルが実行される原因となります。しかし、どうすればこの問題を回避できますか?

+0

2番目のユーザーコントロールがロードされないような例外がスローされますか? Visual Studioで追加の例外監視を有効にする必要があります。 – KSib

+0

もっと多くの例外をオンにした後、私は何かを発見しました。質問のbuttomに編集を追加しました。 – Niksen

答えて

1

問題を解決しました。 すべてのユーザーコントロールからPage.DataBind()を削除し、CT1.aspx.cs(ページコードの後ろ)でPage_Load()からOnLoadComplete()に移動しました。

が実行される前に、すべてのファイルのPage_Load()が実行されています。

関連する問題