मुद्दा:
मैं इस तरह (केवल महत्वपूर्ण लाइनों) एक मार्कअप है:एएसपी/सी # के पीछे कोड मार्कअप से नियंत्रण नहीं पहुँच सकते हैं
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RTDeluxe.ascx.cs"
Inherits="MainSolution.CONTROLTEMPLATES.Kunde.RTDeluxe" %>
<ul id="linkUl" class="teaserLinksUL" runat="server"/>
कोड-पीछे:
namespace MainSolution.CONTROLTEMPLATES.Kunde
public partial class RTDeluxe : UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
linkUl.InnerHtml = string.Empty;
}
}
मैं कोड-पीछे के अंदर ul
तक पहुंच सकता हूं और कोई संकलन त्रुटि नहीं प्राप्त कर सकता। लेकिन, जब मैं कोड डीबग करता हूं तो मुझे NullReferenceException
मिलता है क्योंकि linkUl
शून्य है।
सबसे पहले मैंने सोचा कि नामस्थान कारण हैं। लेकिन, कई कोशिशों के बाद, मुझे यकीन है कि वे सही हैं। FileLocation
सही प्रतीत होता है और controltemplates
मेरे आईआईएस के फ़ोल्डर में एक "कुंड" फ़ोल्डर है जिसमें संबंधित एसीएक्स फाइलें हैं।
मेरे पास एक ही संरचना के साथ अन्य .ascx फ़ाइलें हैं -> वे एक आकर्षण की तरह काम कर रहे हैं।
प्रश्न:
वहाँ इस तरह के व्यवहार के लिए नाम स्थान से किसी भी अन्य कारणों से कर रहे हैं? क्या आपके पास कोई संकेत है जहां मैं देख सकता हूं?
संपादित करें:
protected global::System.Web.UI.HtmlControls.HtmlGenericControl linkUl;
EDIT2::
RTDeluxe.ascx.designer.cs फ़ाइल मौजूद है, उत्पन्न linkUl
इस तरह दिखता है
ठीक है, मैं जवाब देने की कोशिश करेंगे आपके सभी प्रशन। आपके समय और प्रतिक्रिया के लिए धन्यवाद!
- मैंने विजुअल स्टूडियो को पुनरारंभ किया है -> समस्या बनी रहती है।
- मैंने भी समाधान को साफ कर लिया है और एक नया तैनात किया है। -> समस्या बनी रहती है।
- जब मैं डीबग करता हूं और नियंत्रण पदानुक्रम की जांच करता हूं तो मैं देख सकता हूं कि लेबल वहां नहीं है।
- जब मैं आईडी बदलता हूं तो संकलक कोड-पीछे (जो सही है) में एक त्रुटि फेंकता है। अगर मैं वहां आईडी बदलता हूं तो मुझे पहले जैसा ही व्यवहार मिलता है।
- मैंने अपने आईआईएस और पूरे पीसी को भी पुनरारंभ किया -> कोई बदलाव नहीं।
- मैंने लिंकुल-परिभाषा में कोई
Name
विशेषता जोड़ा है -> कोई बदलाव नहीं। - जब मैं
FindControl
का उपयोग करने का प्रयास करता हूं तो यह शून्य लौटाता है। - लक्ष्य-ढांचा .NET 3.5
- लिंकुल दोहराना या किसी अन्य नियंत्रण के अंदर नहीं है।
- web.config को हटाने/बदलने से भी समाधान नहीं होता है।
linkUl
तक पहुंचने से पहलेEnsureChildControls
जोड़ना कुछ भी नहीं बदलेगा।- पेज_PreRender में कोड को स्थानांतरित करना भी काम नहीं करता है।
मैं आपके सुझावों को यहां सूचीबद्ध नहीं करूँगा और जल्द ही उन्हें जोड़ूंगा।
Edit3:
यहाँ पूर्ण मार्कअप:
<%@ Assembly Name="$SharePoint.Project.AssemblyFullName$" %>
<%@ Assembly Name="Microsoft.Web.CommandUI, Version=14.0.0.0, Culture=neutral, PublicKeyToken=71e9bce111e9429c" %>
<%@ Control Language="C#" AutoEventWireup="true" CodeBehind="RTDeluxe.ascx.cs" Inherits="MainSolution.CONTROLTEMPLATES.Kunde.RTDeluxe" %>
<ul id="linkUl" class="teaserLinksUL" runat="server"/>
* Edit4:
यहाँ ठीक है कुछ अतिरिक्त जानकारी मुझे पता चला: जब मैं मार्कअप में कुछ बदलने, सादे को जैसे चाहें HTML टेक्स्ट जिसे ब्राउज़र में पहचाना या दिखाया नहीं गया है। जब मैं ऐसा कुछ करता हूं:
Label label1 = new Label();
label1.Text = "hugo lives!";
Controls.Add(label1);
यह दिखाया गया है। ऐसा लगता है कि दृश्य स्टूडियो में सब ठीक है ... लेकिन सर्वर पर "लाइव" कोड-बैक कुछ अजीब अलग मार्कअप से बात करता है ...
क्या आप linkUl के लिए अपनी कंपाइलर जेनरेट की गई परिभाषा दिखा सकते हैं? –
क्या आपके पास RTDeluxe.designer.cs फ़ाइल है? – giammin
@giammin हां, मैंने सवाल संपादित किया है। –