Page_Load 2.用户控件从不执行(网站)

时间:2017-08-10 14:04:05

标签: c# html asp.net data-binding user-controls

我正在建立一个在框中显示信息的网站。 将有不同的页面具有不同的框组合。他们将有很多共同的盒子。 因此,我将框作为用户控件,然后放在不同的页面上。不同的页面也将共享一个母版页。 但是,当开始开发2.框时,我遇到了一个问题:

1. box的Page_Load(或整个代码)运行正常,但Page_Load和2.框被忽略。这会导致很多空值导致aspx文件崩溃。

我的CT1.aspx包含此内容以使用两个用户控件:

<%@ 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看起来很明显:

<%@ 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中交换两个用户控件的顺序,这也改变了一个人忽略了Page_Load(或整个代码)。基于此,看起来只有后面的第一个代码被执行,其余的被忽略。

编辑: 在遵循初始空引用异常之后出现的异常之后,我可以看到第一个用户控件中的Page.DataBind()仍在执行。这必然意味着这是导致第一个和第二个框的aspx文件运行的原因。但是我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

问题解决了。 我从所有用户控件中删除了Page.DataBind(),并在CT1.aspx.cs(后面的页面代码)中将其从Page_Load()移至OnLoadComplete()

通过执行此操作,所有文件中的Page_Load()已在执行Page.DataBind()之前执行。

相关问题