एक विरासत विरासत VB.NET / ASP परियोजना को शुद्ध करने की कोशिश में, मैं "इसे फिर से तैयार कर रहा हूं, और यह मुझे बताता है।""System.Web.UI.Control" को "System.Web.UI.eb.WontControls.Label" में परिवर्तित करने पर रनटाइम त्रुटियाँ हो सकती हैं"इस लाइन पर:
Dim _UserNameLabel As Label = PortalLogin.FindControl("UserNameLabel")
... लेकिन जब मैं प्राप्त करता हूं और इसे इसे इसे बदलने देता हूं:
Dim _UserNameLabel As Control = PortalLogin.FindControl("UserNameLabel")
... "स्टाइल" संपत्ति यहां लाल हो गई है:
_UserNameLabel.Style("color") = dt1.Rows(0)("TextBoxColor")
क्या उस लेबल को नियंत्रित करने का एक वैकल्पिक तरीका है / एक रंग को नियंत्रित करना, क्या मैं Resharper के सुझाव को अनदेखा करने से बेहतर हूं, या क्या?
उत्तर:
जवाब के लिए 2 № 1सही विकल्प है:
Dim _UserNameLabel = DirectCast(PortalLogin.FindControl("UserNameLabel"), Label)
The Control
द्वारा लौटाए गए संदर्भ FindControl
प्रकार के रूप में डाली है Label
और तुम तो प्रकार के लिए विशिष्ट सदस्यों का उपयोग कर सकते है Label
। यह है Option Infer On
कि अनुमति देता है के प्रकार UserNameLabel
चर को उसके initialising व्यंजक से अनुमानित किया जाएगा । साथ Option Infer Off
आप लिखने की आवश्यकता होगी:
Dim _UserNameLabel As Label = DirectCast(PortalLogin.FindControl("UserNameLabel"), Label)
कुछ लोगों को पसंद करते है कि वैसे भी, स्पष्टता के लिए । प्रकार अनुमान अक्सर काम है, लेकिन आवश्यक नहीं है ।जहां यह आवश्यक है LINQ क्वेरीज़ द्वारा लौटाए गए अनाम प्रकारों का उपयोग कर रहा है ।