Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


Binda klass till anpassad kontroll

Postades av 2003-09-04 23:26:29 - Christer Engholm, i forum asp.net generellt, Tråden har 12 Kommentarer och lästs av 982 personer

Jag har byggt en klass med lite egna valideringskontroller som ärver BasValidator.
Klassen är kompilerad.
Om jag kör detta på en vanlig .aspx-sida med codebehind fungerar allt perfekt med Page.Validate() men nu är det såhär: I min .aspx-sida inkluderar jag dynamiskt .ascx-kontroller. Jag registrerar klassens tagprefix mm i dessa kontroller istället för i .aspx-sidan. Problemet är att när jag nu kör Page.Validate() får jag ett system.nullreferenceexception, varför och hur kan jag lösa detta?

Exempel:

Fungerar, aspx-sida + codebehind
http://www.skadebas.com/test/testvalidatorcontrols.aspx

Fungerar EJ, aspx-sida som inkluderar en ascx-kontroll med codebehind
http://www.skadebas.com/test/testvalidatorcontrolsinusercontrol.aspx

Tackar på förhand!



Svara

Sv: Binda klass till anpassad kontroll

Postades av 2003-09-05 07:53:47 - Tomas Lundgren

Kan du inte ge oss lite kod på det hela?


Svara

Sv: Binda klass till anpassad kontroll

Postades av 2003-09-05 09:53:35 - Christer Engholm

Här kommer "lite" kod

KLASSEN
*******
<code>
Imports System
Imports System.Web
Imports System.Web.UI
Imports System.Web.UI.WebControls
Imports Microsoft.VisualBasic
Imports System.Text.RegularExpressions
Imports System.Collections.Specialized

Namespace ValidatorControls

#Region " KLASS: KONTROLLERAR ATT TEXBOX EJ ÄR TOM "

Public Class RequiredTextBoxValidator : Inherits BaseValidator

'--> Deklarerar klass-globala variabler
Private objControlToValidate As TextBox
Private strErrorMessage As String
Private strInput As String
Private pnlClientMessage As Panel

#Region " FUNKTION (ControlPropertiesValid()): Letar upp kontroll som skall valideras "

Protected Overrides Function ControlPropertiesValid() As Boolean

'--> Deklarerar kontroll-variabel
Dim ValidatorControl As Control
'--> Letar upp kontroll som skall valideras
ValidatorControl = FindControl(ControlToValidate)
'--> Letar upp meddelande-ruta-kontroll
pnlClientMessage = FindControl("pnlClientMessage")

'--> Kontroll hittad
If Not (ValidatorControl Is Nothing) Then
'--> Tilldelar klass-globala variabler värden
objControlToValidate = ValidatorControl
strInput = objControlToValidate.Text.ToString
strErrorMessage = ErrorMessage
Return True
'--> Ingen kontroll hittades
Else
Return False
End If '//f Not (ValidatorControl Is Nothing)

End Function

#End Region

#Region " FUNKTION (EvaluateIsValid()): Kontrollerar om kontrollen är godkänd eller ej "

Protected Overrides Function EvaluateIsValid() As Boolean

'--> Deklarerar variabel samt förutsätter
' att fel kommer att hittas
Dim boolIsValid As Boolean = False

'--> Om inte kontrollen är tom, allt OK
If Not (strInput.Trim = "") Then
'--> Om endast panelen innehåller rubrik-kontroll
' tilldelas den en ny Css-klass som gömmer panelen
If (pnlClientMessage.Controls.Count = 1) Then
pnlClientMessage.CssClass = "NoMessage"
End If
'--> Booleanskt värde: Allt OK
boolIsValid = True
'--> Kontrollen tom
Else
'--> Tlldelar panelen ny klass
pnlClientMessage.CssClass = "InfoMessage"
'--> Adderar ny literal-kontroll (felmeddelande)
pnlClientMessage.Controls.Add(New LiteralControl("&raquo; " & strErrorMessage & "<br>"))
End If

'--> Returnerar valideringsvärde
Return boolIsValid

End Function

#End Region

End Class

#End Region

#Region " KLASS : KONTROLLERAR ATT TEXBOX ENDAST INNEHÅLLER SIFFROR "

Public Class IsNumericValidator : Inherits BaseValidator

'--> Deklarerar klass-globala variabler
Private objControlToValidate As TextBox
Private strErrorMessage As String
Private strInput As String
Private pnlClientMessage As Panel

#Region " FUNKTION (ControlPropertiesValid()): Letar upp kontroll som skall valideras "

Protected Overrides Function ControlPropertiesValid() As Boolean

'--> Deklarerar kontroll-variabel
Dim ValidatorControl As Control
'--> Letar upp kontroll som skall valideras
ValidatorControl = FindControl(ControlToValidate)
'--> Letar upp meddelande-ruta-kontroll
pnlClientMessage = FindControl("pnlClientMessage")

'--> Kontroll hittad
If Not (ValidatorControl Is Nothing) Then
'--> Tilldelar klass-globala variabler värden
objControlToValidate = ValidatorControl
strInput = objControlToValidate.Text.ToString
strErrorMessage = ErrorMessage
Return True
'--> Ingen kontroll hittades
Else
Return False
End If '//f Not (ValidatorControl Is Nothing)

End Function

#End Region

#Region " FUNKTION (EvaluateIsValid()): Kontrollerar om kontrollen är godkänd eller ej "

Protected Overrides Function EvaluateIsValid() As Boolean

'--> Deklarerar variabel samt förutsätter
' att fel kommer att hittas
Dim boolIsValid As Boolean = False

'--> Om allt OK
If IsNumeric(strInput.Trim) Then
'--> Om endast panelen innehåller rubrik-kontroll
' tilldelas den en ny Css-klass som gömmer panelen
If (pnlClientMessage.Controls.Count = 1) Then
pnlClientMessage.CssClass = "NoMessage"
End If
'--> Booleanskt värde: Allt OK
boolIsValid = True
'--> Fel hittat
Else
'--> Tlldelar panelen ny klass
pnlClientMessage.CssClass = "InfoMessage"
'--> Adderar ny literal-kontroll (felmeddelande)
pnlClientMessage.Controls.Add(New LiteralControl("&raquo; " & strErrorMessage & "<br>"))
End If

'--> Returnerar valideringsvärde
Return boolIsValid

End Function

#End Region

End Class

#End Region

#Region " KLASS: KONTROLLERAR ATT TEXTBOX INNEHÅLLER PERSONUPPGIFTER I RÄTT FORMAT EX: 123456-1234 "

Public Class OrgNoValidator_SWE : Inherits BaseValidator

'--> Deklarerar klass-globala variabler
Private objControlToValidate As TextBox
Private strErrorMessage As String
Private strInput As String
Private pnlClientMessage As Panel

#Region " FUNKTION (ControlPropertiesValid()): Letar upp kontroll som skall valideras "

Protected Overrides Function ControlPropertiesValid() As Boolean

'--> Deklarerar kontroll-variabel
Dim ValidatorControl As Control
'--> Letar upp kontroll som skall valideras
ValidatorControl = FindControl(ControlToValidate)
'--> Letar upp meddelande-ruta-kontroll
pnlClientMessage = FindControl("pnlClientMessage")

'--> Kontroll hittad
If Not (ValidatorControl Is Nothing) Then
'--> Tilldelar klass-globala variabler värden
objControlToValidate = ValidatorControl
strInput = objControlToValidate.Text.ToString
strErrorMessage = ErrorMessage
Return True
'--> Ingen kontroll hittades
Else
Return False
End If '//f Not (ValidatorControl Is Nothing)

End Function

#End Region

#Region " FUNKTION (EvaluateIsValid()): Kontrollerar om kontrollen är godkänd eller ej "

Protected Overrides Function EvaluateIsValid() As Boolean

'--> Deklarerar variabel samt förutsätter
' att fel kommer att hittas
Dim boolIsValid As Boolean = False

'--> Deklarerar regexpression
Dim objRegEx As Regex
objRegEx = New Regex("[0-9]{6}-[0-9]{4}")

'--> Deklarearar variabel samt kontrollerar
' textBox-värdet mot regexpression
Dim boolCheckExpression As Boolean = objRegEx.IsMatch(strInput.Trim)

'--> Om allt OK
If (boolCheckExpression) Then
'--> Om endast panelen innehåller rubrik-kontroll
' tilldelas den en ny Css-klass som gömmer panelen
If (pnlClientMessage.Controls.Count = 1) Then
pnlClientMessage.CssClass = "NoMessage"
End If
'--> Booleanskt värde: Allt OK
boolIsValid = True
'--> Fel hittat
Else
'--> Tlldelar panelen ny klass
pnlClientMessage.CssClass = "InfoMessage"
'--> Adderar ny literal-kontroll (felmeddelande)
pnlClientMessage.Controls.Add(New LiteralControl("&raquo; " & strErrorMessage & "<br>"))
End If

'--> Returnerar valideringsvärde
Return boolIsValid

End Function

#End Region

End Class

#End Region

#Region " KLASS: KONTROLLERAR ATT TEXTBOX INNEHÅLLER E-POSTADRESS I RÄTT FORMAT EX: adam@skadebas.com "

Public Class EmailValidator : Inherits BaseValidator

'--> Deklarerar klass-globala variabler
Private objControlToValidate As TextBox
Private strErrorMessage As String
Private strInput As String
Private pnlClientMessage As Panel

#Region " FUNKTION (ControlPropertiesValid()): Letar upp kontroll som skall valideras "

Protected Overrides Function ControlPropertiesValid() As Boolean

'--> Deklarerar kontroll-variabel
Dim ValidatorControl As Control
'--> Letar upp kontroll som skall valideras
ValidatorControl = FindControl(ControlToValidate)
'--> Letar upp meddelande-ruta-kontroll
pnlClientMessage = FindControl("pnlClientMessage")

'--> Kontroll hittad
If Not (ValidatorControl Is Nothing) Then
'--> Tilldelar klass-globala variabler värden
objControlToValidate = ValidatorControl
strInput = objControlToValidate.Text.ToString
strErrorMessage = ErrorMessage
Return True
'--> Ingen kontroll hittades
Else
Return False
End If '//f Not (ValidatorControl Is Nothing)

End Function

#End Region

#Region " FUNKTION (EvaluateIsValid()): Kontrollerar om kontrollen är godkänd eller ej "

Protected Overrides Function EvaluateIsValid() As Boolean

'--> Deklarerar variabel samt förutsätter
' att fel kommer att hittas
Dim boolIsValid As Boolean = False

'--> Deklarerar regexpression
Dim objRegEx As Regex
objRegEx = New Regex("^[\w-\.]+@([\w-]+\.)+[\w-]{2,3}$")

'--> Deklarearar variabel samt kontrollerar
' textBox-värdet mot regexpression
Dim boolCheckExpression As Boolean = objRegEx.IsMatch(strInput.Trim)

'--> Om allt OK
If (boolCheckExpression) Then
'--> Om endast panelen innehåller rubrik-kontroll
' tilldelas den en ny Css-klass som gömmer panelen
If (pnlClientMessage.Controls.Count = 1) Then
pnlClientMessage.CssClass = "NoMessage"
End If
'--> Booleanskt värde: Allt OK
boolIsValid = True
'--> Fel hittat
Else
'--> Tlldelar panelen ny klass
pnlClientMessage.CssClass = "InfoMessage"
'--> Adderar ny literal-kontroll (felmeddelande)
pnlClientMessage.Controls.Add(New LiteralControl("&raquo; " & strErrorMessage & "<br>"))
End If

'--> Returnerar valideringsvärde
Return boolIsValid

End Function

#End Region

End Class

#End Region

#Region " KLASS: KONTROLLERAR ATT EN OPTION HAR VALTS I DROPDOWNLIST "

Public Class RequiredDropDownListValidator : Inherits BaseValidator

'--> Deklarerar klass-globala variabler
Private objControlToValidate As DropDownList
Private strErrorMessage As String
Private intInput As Integer
Private pnlClientMessage As Panel

#Region " FUNKTION (ControlPropertiesValid()): Letar upp kontroll som skall valideras "

Protected Overrides Function ControlPropertiesValid() As Boolean

'--> Deklarerar kontroll-variabel
Dim ValidatorControl As Control
'--> Letar upp kontroll som skall valideras
ValidatorControl = FindControl(ControlToValidate)
'--> Letar upp meddelande-ruta-kontroll
pnlClientMessage = FindControl("pnlClientMessage")

'--> Kontroll hittad
If Not (ValidatorControl Is Nothing) Then
'--> Tilldelar klass-globala variabler värden
objControlToValidate = ValidatorControl
intInput = objControlToValidate.SelectedIndex.ToString
strErrorMessage = ErrorMessage
Return True
'--> Ingen kontroll hittades
Else
Return False
End If '//f Not (ValidatorControl Is Nothing)

End Function

#End Region

#Region " FUNKTION (EvaluateIsValid()): Kontrollerar om kontrollen är godkänd eller ej "

Protected Overrides Function EvaluateIsValid() As Boolean

'--> Deklarerar variabel samt förutsätter
' att fel kommer att hittas
Dim boolIsValid As Boolean = False

'--> Om inte kontrollen är tom, allt OK
If Not (intInput = 0) And Not IsNothing(intInput) Then
'--> Om endast panelen innehåller rubrik-kontroll
' tilldelas den en ny Css-klass som gömmer panelen
If (pnlClientMessage.Controls.Count = 1) Then
pnlClientMessage.CssClass = "NoMessage"
End If
'--> Booleanskt värde: Allt OK
boolIsValid = True
'--> Kontrollen tom
Else
'--> Tlldelar panelen ny klass
pnlClientMessage.CssClass = "InfoMessage"
'--> Adderar ny literal-kontroll (felmeddelande)
pnlClientMessage.Controls.Add(New LiteralControl("&raquo; " & strErrorMessage & "<br>"))
End If

'--> Returnerar valideringsvärde
Return boolIsValid

End Function

#End Region

End Class

#End Region

End Namespace
</code>

ASPX-SIDAN
**********
<code>
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="TestValidatorControlsInUserControl.aspx.vb" Inherits="skadebas.TestValidatorControlsInUserControl"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>TestValidatorControlsInUserControl</title>
<link rel="stylesheet" type="text/css" href="/SB_System/SB_CSS/default_frames_IE.css">
<script language="javascript" src="/SB_System/SB_Scripts/SB_Javascripts/shared.js"></script>
</head>
<body onload="handleBodyLayers();" onresize="handleBodyLayers();">

<form id="Form1" action="usercontrol.ascx" method="post" runat="server">
<!-- START KLIENTMEDDELENDE -->
<asp:Panel ID="pnlClientMessage" Runat="server" CssClass="NoMessage"><strong>Följande fel påträffades:</strong><br></asp:Panel>
<!-- SLUT KLIENTMEDDELENDE -->
<!-- START SIDINNEHÅLL -->
<asp:Panel ID="pnlBodyContainer" Runat="server">
</asp:Panel>
<!-- SLUT SIDINNEHÅLL -->
</form>

</body>
</html>
</code>

CODEBEHIND FÖR ASPX-SIDAN
*************************
<code>
Public Class TestValidatorControlsInUserControl
Inherits System.Web.UI.Page

Protected WithEvents pnlClientMessage As Panel
Protected WithEvents pnlBodyContainer As Panel

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'--> Initierar meddelanderuta
pnlClientMessage = Page.FindControl("pnlClientMessage")

'--> Adderar usercontrol till panel
pnlBodyContainer.Controls.Add(Page.LoadControl("UserControl.ascx"))
End Sub

Sub Submit(ByVal Obj As Object, ByVal EA As EventArgs)
Page.Validate()
If (Page.IsValid) Then
pnlClientMessage.Controls.Item(0).Visible = False
pnlClientMessage.Controls.Add(New LiteralControl("Formuläret har validerats"))
pnlClientMessage.CssClass = "ConfirmMessage"
End If
End Sub

End Class
</code>

ASCX-KONTROLLEN
****************
<code>
<%@ Control Language="vb" AutoEventWireup="false" Codebehind="UserControl.ascx.vb" Inherits="skadebas.UserControl" TargetSchema="http://schemas.microsoft.com/intellisense/ie5" %>
<%@ Register TagPrefix="SkadeBas" NameSpace="ValidatorControls" Assembly="ValidatorControls" %>
Förnamn:<asp:TextBox ID="tbFirstName" Runat="server"/>
<SkadeBas:RequiredTextBoxValidator ID="rtbv_tbFirstName" Runat="server" ControlToValidate="tbFirstName" Text="*" ErrorMessage="Förnamn får ej vara tomt"/>
<br>
Efternamn:<asp:TextBox ID="tbLastName" Runat="server"/>
<SkadeBas:RequiredTextBoxValidator ID="rtbv_tbLastName" Runat="server" ControlToValidate="tbLastName" Text="*" ErrorMessage="Efternamn får ej vara tomt"/>
<br>
Personnummer:<asp:TextBox ID="tbOrgNo" Runat="server" MaxLength="11"/>
<SkadeBas:OrgNoValidator_SWE ID="on_tbOrgNo" Runat="server" ControlToValidate="tbOrgNo" Text="*" ErrorMessage="Personnummer måste vara i formatet: 123456-1234"/>
<br>
Siffror:<asp:TextBox ID="tbNumbers" Runat="server"/>
<SkadeBas:IsNumericValidator ID="is_tbNumbers" Runat="Server" ControlToValidate="tbNumbers" Text="*" ErrorMessage="Siffror får endast innehålla siffror"/>
<br>
Välj stad:
<asp:DropDownList ID="ddlCities" Runat="server">
<asp:ListItem Value="">-- Välj stad --</asp:ListItem>
<asp:ListItem Value="1">Arboga</asp:ListItem>
<asp:ListItem Value="2">Björknäs</asp:ListItem>
<asp:ListItem Value="3">Stockholm</asp:ListItem>
</asp:DropDownList>
<SkadeBas:RequiredDropDownListValidator ID="rddlv_ddlCities" Runat="Server" ControlToValidate="ddlCities" Text="*" ErrorMessage="Du måste välja en av städerna"/>
<br>
E-post: <asp:TextBox ID="tbEmail" Runat="server"/>
<SkadeBas:EmailValidator ID="ev_tbEmail" Runat="server" ControlToValidate="tbEmail" Text="*" ErrorMessage="Du angav ingen riktig e-postadress"/>
<br>
<asp:Button Runat="server" Text="Skicka" OnClick="Submit" CausesValidation="False" ID="Button1"/>
</p>
</code>

CODEBEHIND FÖR ASCX-KLASS
<code>
Public MustInherit Class UserControl
Inherits System.Web.UI.UserControl

Protected WithEvents pnlClientMessage As Panel

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Init
'CODEGEN: This method call is required by the Web Form Designer
'Do not modify it using the code editor.
InitializeComponent()
End Sub

#End Region

Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'--> Initierar meddelanderuta
pnlClientMessage = Page.FindControl("pnlClientMessage")
End Sub

Sub Submit(ByVal Obj As Object, ByVal EA As EventArgs)
Page.Validate()
If (Page.IsValid) Then
pnlClientMessage.Controls.Item(0).Visible = False
pnlClientMessage.Controls.Add(New LiteralControl("Formuläret har validerats"))
pnlClientMessage.CssClass = "ConfirmMessage"
End If
End Sub

End Class
</code>


Svara

Sv: Binda klass till anpassad kontroll

Postades av 2003-09-05 10:02:39 - Mikael Sand

Page.Parent.Validate() ??? Sidan finns ju inte i det nuvarande objektet eftersom du befinner dig i en kontroll. Eller så. det är lite rörigt.

I vilket fall som helst ska du npg genast göra lite ändringar i din web.config-fil. Jag fick upp hela felmeddelandet på din sida som du länkade till. Kanske du specifikt sett till att det är så men om inte så kan jag garantera dig att det kraschar då du ska göra en databaskoppling och HEPP där ligger lösenordet i klartext!!!

Sök på "<customErrors> element" i din dokumentation eller på MSDN för närmare information.

vad du behöver göra är att ge användaren en annan sida som felhantering och sen konfigurera så att du och utvecklingsdatorn får all information. Det är ganska smart tänkt av MS.

//Mikael.NET


Svara

Sv: Binda klass till anpassad kontroll

Postades av 2003-09-05 10:25:03 - Christer Engholm

Page.Parent.Validate var bar en test eftesom Page.Validate Ej fungerade, glömde att ta bort.

Jag har testat applikationen från flera olika platser och ej haft några problem med databaskopplingen med jag skall titta närmare på det här med <customErrors>

Tack!


Svara

Sv: Binda klass till anpassad kontroll

Postades av 2003-09-05 11:12:02 - Johan Normén

Eftersom det är så mkt kod så orkar jag inte gå genom den, kan du skicka in hela ditt felmedenande här?

Då du verkar hanteradet på ett annat sätt. kan ge dig ett tips. KÖR inte med <customError> och hantera ditt fel i bakgrunden så länge du sitter och utvecklar. Detta är något du bör slå på i din release istället. Varför orkar jag inte gå in på.

Har det löst sig annars? Har du kört step by debugging?

//Johan N


Svara

Sv: Binda klass till anpassad kontroll

Postades av 2003-09-05 11:29:04 - Christer Engholm

-> Det har inte löst sig :-(
-> Jag har aldrig användt mig av step by debugging, hur?
-> Här kommer alla felmeddelanden på en o samma gång //Christer Gessle

Server Error in '/' Application.
--------------------------------------------------------------------------------

Object reference not set to an instance of an object.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:


Line 25:
Line 26: Sub Submit(ByVal Obj As Object, ByVal EA As EventArgs)
Line 27: Page.Validate()
Line 28: If (Page.IsValid) Then
Line 29: pnlClientMessage.Controls.Item(0).Visible = False


Source File: \\webserver\webs\skadebas\test\UserControl.ascx.vb Line: 27

Stack Trace:


[NullReferenceException: Object reference not set to an instance of an object.]
ValidatorControls.RequiredTextBoxValidator.EvaluateIsValid() +94
System.Web.UI.WebControls.BaseValidator.Validate() +138
System.Web.UI.Page.Validate() +234
skadebas.UserControl.Submit(Object Obj, EventArgs EA) in \\webserver\webs\skadebas\test\UserControl.ascx.vb:27
System.Web.UI.WebControls.Button.OnClick(EventArgs e) +108
System.Web.UI.WebControls.Button.System.Web.UI.IPostBackEventHandler.RaisePostBackEvent(String eventArgument) +57
System.Web.UI.Page.RaisePostBackEvent(IPostBackEventHandler sourceControl, String eventArgument) +18
System.Web.UI.Page.RaisePostBackEvent(NameValueCollection postData) +33
System.Web.UI.Page.ProcessRequestMain() +1244



Svara

Sv: Binda klass till anpassad kontroll

Postades av 2003-09-06 10:25:35 - Fredrik Normén

Felet ligger i din EvaluateIsValid() metod.

I din EvalutateIsValid metod så har du två fall som kan ge "Object reference not set to an instance of an object"
det första är strInput.Trim om strInput inte innehåller något värde alltså är null, så kan du inte köra Trim.
Om nu strInput inte skulle vara null se då till att kontrollera så att inte pnlClientMessage är null.

/Fredrik Normén


Svara

Sv: Binda klass till anpassad kontroll

Postades av 2003-09-06 11:03:02 - Christer Engholm

Hur förklarar du att det första exemplet fungerar (kolla URL:arna ovan, hmm ibland är det svårt med svengelskan). Båda exempel är identiskt uppbyggda i formuläret med samma valideringskontroller mm.


Svara

Sv: Binda klass till anpassad kontroll

Postades av 2003-09-06 11:21:13 - Johan Normén

Är koden exakt identisk under båda URL:erna? Du kör völ en med kontrol och en utan?

//Johan N


Svara

Sv: Binda klass till anpassad kontroll

Postades av 2003-09-06 11:25:39 - Christer Engholm

Jo, men jag menar själva formulärkoden. I det första exemplet ligger formuläret i .aspx-sidan och i andra exemplet ligger det i .ascx-kontrollen.


Svara

Sv: Binda klass till anpassad kontroll

Postades av 2003-09-06 11:28:55 - Fredrik Normén

Skillnaden är att när du kör all kod i din aspx sida (din första URL) så kommer metoden FindControl leta i Page objektet. Men kör du i FindControl i en custom controll så kommer FindControl att enbart leta bland kontrollens kontroller.

I din ControlPropertiesValid() ändra följande:

<code>
FindControl("pnlClientMessage")
</code>

till

<code>
Page.FindControl("pnlClientMessage")
</code>

/Fredrik Normén


Svara

Sv: Binda klass till anpassad kontroll

Postades av 2003-09-06 11:38:29 - Christer Engholm

Som vanligt, allt är SÅ lätt när man kan det.

Tusen tack ALLA för hjälpen!!!


Svara

Nyligen

  • 09:09 Vill du köpa medicinska tester?
  • 12:47 Vem beviljar assistansen – kommune
  • 14:17 Någon med erfarenhet av hemstädnin
  • 14:14 Bör man använda sig av en båtförme
  • 14:12 Finns det någon intressant hundblo
  • 14:25 Tips på verktyg för att skapa QR-k
  • 14:23 Tips på verktyg för att skapa QR-k
  • 20:52 Fungerer innskuddsbonuser egentlig

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 569 155
27 952
271 704
11 723
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies