1

Ich habe dieses Problem beim Versuch, eine ASPX-Seite von einer referenzierten Assembly zu verwenden. Diese Seite besteht aus einer Inhaltsseite und ihrer Masterseite. Die Ausnahme tritt nur dann auf, wenn auf die Web-Steuerelemente der Inhaltsseite von einem anderen Webprojekt aus zugegriffen wird. Dies geschieht jedoch nicht, wenn diese Seite von demselben Projekt aus aufgerufen wird, zu dem sie gehört.NullReferenceException Ausnahme auf einer Inhaltsseite, die durch eine Assembly referenziert wird

Zuerst sollten diese Seiten reguläre ASPX-Seiten sein, und dann funktionierten sie großartig (dh diese Ausnahme passierte nicht), aber unsere Vorgesetzten beschlossen, sie in MasterPages für etwas Wiederverwendbarkeit oder etwas (was irgendwie seltsam ist, da diese ASPX-Seiten automatisch generiert werden).

So haben wir in diese Schwierigkeiten jetzt:/

EDIT: ich einige Code bin Hinzufügen helfen Sie mir helfen :)

Master-Seite:

<%@ Master Language="C#" AutoEventWireup="true" CodeBehind="MasterPage.master.cs" 
Inherits="WebApplicationTemplate.MasterPage" %> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head id="Head1" runat="server"> 
    <asp:ContentPlaceHolder ID="headPlaceHolder" runat="server"> 
    </asp:ContentPlaceHolder> 
</head> 
<body> 
    <form id="form" runat="server"> 
     <asp:ContentPlaceHolder ID="formPlaceHolder" runat="server"> 
     </asp:ContentPlaceHolder> 
    </form> 
</body> 
</html> 

Inhalt Seite:

<%@ MasterType VirtualPath="~/MasterPage.Master" %> 

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true" 
    CodeBehind="TestPage.aspx.cs" Inherits="WebApplicationTemplate.TestPage" %> 

<asp:Content ID="headContent" ContentPlaceHolderID="headPlaceHolder" runat="server"> 
</asp:Content> 
<asp:Content ID="formContent" ContentPlaceHolderID="formPlaceHolder" runat="server"> 
    <asp:TextBox ID="id1" runat="server" Text="Text" MaxLength="40" Style="top: 100; 
     left: 100; width: 100; height: 100; position: absolute;" /> 
</asp:Content> 

Funktion, die die Ausnahme im Content-Seitencode auslöst hinter:

public void Foo() 
{ 
id1.Text = "something"; //Object reference not set to an instance of an object. 
} 

Wie ich schon sagte, ich habe nur dieses Problem, wenn ich diese Seite von einem anderen Projekt durch eine referenzierte Assembly zuzugreifen. Ich weiß nicht, ob ich irgendetwas in irgendeiner web.config konfigurieren muss, sei es im Projekt der Masterseite oder in dem, das auf die Assembly des früheren Projekts verweist.

+3

Code anzeigen. –

Antwort

0

Problem gelöst.

Die erste Zeile auf der Seite Inhalt messed it up, so ist dies, wie es jetzt aussieht:

<%@ Page Title="" Language="C#" MasterPageFile="~/MasterPage.Master" AutoEventWireup="true" 
    CodeBehind="TestPage.aspx.cs" Inherits="WebApplicationTemplate.TestPage" %> 
<asp:Content ID="headContent" ContentPlaceHolderID="headPlaceHolder" runat="server"> 
</asp:Content> 
<asp:Content ID="formContent" ContentPlaceHolderID="formPlaceHolder" runat="server"> 
    <asp:TextBox ID="id1" runat="server" Text="Text" MaxLength="40" Style="top: 100; 
     left: 100; width: 100; height: 100; position: absolute;" /> 
</asp:Content> 

So nach der <%@ MasterType VirtualPath="~/MasterPage.Master" %> Linie entfernt wurde, wurde das Problem gelöst, obwohl jetzt müssen wir die Seite geworfen .Master-Eigenschaft, wenn man auf seine Felder, Eigenschaften, Steuerelemente usw. von der ContentPage zugreifen möchte, weil wir durch Entfernen der oben erwähnten Zeile nicht mehr wissen, auf welche MasterPage-Klasse wir verweisen.

Etwas wie folgt aus:

MasterPage MP; 

    protected override void OnInit(EventArgs e) 
    { 
     base.OnInit(e); 
     //Setting the master page 
     MP = ((WebApplicationTemplate.MasterPage)Master); 
    } 

    protected void Foo() 
    { 
     //Accessing a MasterPage control 
     MP.Bar.Visible = false; 
    } 

Und na ja, das ist es. Kann nicht erraten, wie das mein Problem löst, aber es tut es. Ich wäre sehr froh, wenn jemand etwas Licht darauf werfen und meine Neugier befriedigen könnte. Es ist sehr unwahrscheinlich, aber, hoffe jemand findet dies nützlich, wenn jemand mit diesem Problem stecken bleibt.

0

Ein solcher Fehler tritt normalerweise auf, wenn Konfigurationsinformationen fehlen, die in der anderen Lösung vorhanden sind, auf deren Assembly Sie zugreifen.

Sie müssen diese Einstellungen (z. B. app.config oder web.config) in das aktuelle Projekt kopieren, von dem aus Sie auf die andere Baugruppe zugreifen.

Hoffe, das hilft.

+0

Wow, jetzt frage ich mich, warum ich vorher nicht daran gedacht habe! Danke, versuchen Sie es sofort! –

Verwandte Themen