में शून्य है मेरे पास एक बहुत ही अजीब स्थिति है जहां पेज लेबल लोड में मेरा लेबल नियंत्रण शून्य है। क्या यह भी संभव होना चाहिए?एएसपीएनईटी वेबफॉर्म सर्वर कंट्रोल पेज_लोड
मैं एक वेब फ़ॉर्म है:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WebForm1.aspx.cs" Inherits="MyNamespace.Templates.Pages.WebForm1" %>
<%@ Register TagPrefix="cw" Namespace="MyNamespace.Templates.Units" Assembly="MyNamespace" %>
<!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 runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div style="background-color:yellowgreen;">
FIRST
</div>
<div style="background-color: wheat;">
SECOND
<cw:ArticleColumn runat="server" ID="ac" ArticleID="1899"/>
</div>
</form>
</body>
</html>
वेब फार्म के Page_Load में, मैं बस एक
if(!IsPostBack) DataBind();
उपयोगकर्ता नियंत्रण ArticleColumn इस तरह दिखता है:
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="ArticleColumn.ascx.cs" Inherits="MyNamespace.Templates.Units.ArticleColumn" %>
<h2><asp:Label runat="server" ID="myArticleHeading" Text="TOM" /></h2>
<p><asp:Label runat="server" ID="myArticleIntro" Text="TOM" /></p>
<asp:Label runat="server" ID="myArticleBody" Text="TOM" />
और पीछे वाला कोड इस तरह दिखता है:
public partial class ArticleColumn : UserControlBase<PageTypes.ArticleBase>
{
public int ArticleID { get; set; }
protected void Page_Load(object sender, EventArgs e)
{
var page = DataFactory.Instance.GetPage(new PageReference(ArticleID));
myArticleHeading.Text = page.PageName;
myArticleIntro.Text = page.Property["IntroText"] != null
? page.Property["IntroText"].ToWebString()
: string.Empty;
myArticleBody.Text = page.Property["MainBody"] != null
? page.Property["MainBody"].ToWebString()
: string.Empty;
DataBind();
}
}
जब मैं myArticleHeading सेट करने का प्रयास करता हूं तो यह विफल रहता है। क्योंकि नियंत्रण शून्य है। यह संभव ही कैसे है? नियंत्रण के ASP.NET स्वत: बाध्यकारी किसी भी तरह विफल रहे हैं चाहिए ...
मैं कोशिश की है: - पुन: आरंभ करना VS 2010 - स्विचिंग विन्यास निर्माण - सफाई/पुनर्निर्माण - नियंत्रण के बदलने के नाम ताकि डिजाइनर फ़ाइल है अपडेट किया गया।
कहने की जरूरत नहीं है, उपरोक्त में से कोई भी काम नहीं करता है।
संपादित करें: जोड़ा स्टैक ट्रेस:
[NullReferenceException: Object reference not set to an instance of an object.]
MyNamespace.Templates.Units.ArticleColumn.Page_Load(Object sender, EventArgs e) in C:\DevProjects\CustomerWeb\Main\Source\MyNamespace\Templates\Units\ArticleColumn.ascx.cs:21
System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35
System.Web.UI.Control.OnLoad(EventArgs e) +91
System.Web.UI.Control.LoadRecursive() +74
System.Web.UI.Control.LoadRecursive() +146
System.Web.UI.Control.LoadRecursive() +146
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +2207
समाधान: मैं सिर्फ इस सवाल का जवाब अपने आप को मिल गया। यदि समस्या ठीक पृष्ठ पर usercontrol के लिए इस घोषणा का उपयोग करना:
<%@ Register TagPrefix="cw" TagName="ArticleColumn" Src="~/Templates/Units/ArticleColumn.ascx" %>
यह दोषपूर्ण घोषणा एचटीएमएल देखने से ReSharper राइट क्लिक मीनू का उपयोग कर जोड़ा गया है:
<%@ Register TagPrefix="cw" Namespace="MyNamespace.Templates.Units" Assembly="MyNamespace" %>
मदद के लिए धन्यवाद! :)
आप वेब फॉर्म के पेज लोड और उपयोगकर्ता नियंत्रण के पृष्ठ लोड दोनों पर डेटाबिंड को सामान्य कॉल क्यों कर रहे हैं? असल में, आप डेटाबेस को क्यों बुला रहे हैं? इसके अलावा, क्या आप अपवाद/स्टैक ट्रेस शामिल कर सकते हैं? –
डाटाबेसिंग समस्या को ठीक करने के लिए मेरा बेताब प्रयास है: एस स्टैक ट्रेस जोड़ देगा। एक के लिए –
के। उन DataBind() कॉल से छुटकारा पाएं। वे कुछ भी नहीं कर रहे हैं। दूसरा, myArticleHeading.Text = page.PageName से पहले; लाइन, इसे जोड़ें: स्ट्रिंग sTest = पेज। पेजनाम; लक्ष्य यह पुष्टि करना है कि यह 'पृष्ठ' चर नहीं है जो शून्य है। –