M
Matthias Lohrer
Hi,
I'm playing around with the possibilities of Page.ParseControl.
I parse a string with an input-field and an RequiredFieldValidator-control.
For testing the server-side validation I disable JavaScript
and get this scenario:
- When you enter a name, no warning appears, that's good!
- When you don't enter a name, the warning appears, that's very good!
So everything seems to be right.
But what, if you get the idea to check in your code, whether the form is
valid or not, by using "If Page.IsValid", perhaps this way:
---parsetest.aspx--- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="parsetest.aspx.vb" Inherits="Xorum.parsetest" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>parsetest</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
</form>
<p runat="server" id="kommentar" ></p>
</body>
</html>
--- ---
parsetest.aspx.vb --- --- --- --- --- --- --- --- --- --- --- --- --- --- --
Public Class parsetest
Inherits System.Web.UI.Page
Protected form1 As System.Web.UI.HtmlControls.HtmlForm
Protected kommentar As System.Web.UI.HtmlControls.HtmlGenericControl
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim s As String
s = "What is your name? <br><br><input runat='server' id='txtName'
type='text' ><asp:RequiredFieldValidator id='reqTxtName'
ControlToValidate='txtName' Display='dynamic' runat='server'>
Please enter your name.</asp:RequiredFieldValidator> <br><br><input
runat='server' type='submit' value=' OK ' ><br><br><asp:Label id='meldung'
runat='server' />"
form1.Controls.Add(Page.ParseControl(s))
If IsPostBack Then
Page.Validate()
If Page.IsValid Then
kommentar.InnerHtml &= "OK "
Else
kommentar.InnerHtml &= "Not OK "
End If
End If
End Sub
End Class
--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
This is the result:
The validation works correctly, but using "Page.IsValid" will ALWAYS return
false. Even if the
validation control works correctly and no warning appears, there will be the
message "Not OK "!!!
On the other side: When I use just this code, but don't use
Page.ParseControl, but
insert the code for the form and the validation-control right into the
aspx-Page, everything works
fine and Page.IsValid will always say correctly, whether the form is valid
or not.
Any idea?
Thank you
Matthias
I'm playing around with the possibilities of Page.ParseControl.
I parse a string with an input-field and an RequiredFieldValidator-control.
For testing the server-side validation I disable JavaScript
and get this scenario:
- When you enter a name, no warning appears, that's good!
- When you don't enter a name, the warning appears, that's very good!
So everything seems to be right.
But what, if you get the idea to check in your code, whether the form is
valid or not, by using "If Page.IsValid", perhaps this way:
---parsetest.aspx--- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
<%@ Page Language="vb" AutoEventWireup="false"
Codebehind="parsetest.aspx.vb" Inherits="Xorum.parsetest" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html>
<head>
<title>parsetest</title>
<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">
<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema"
content="http://schemas.microsoft.com/intellisense/ie5">
</head>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
</form>
<p runat="server" id="kommentar" ></p>
</body>
</html>
--- ---
parsetest.aspx.vb --- --- --- --- --- --- --- --- --- --- --- --- --- --- --
Public Class parsetest
Inherits System.Web.UI.Page
Protected form1 As System.Web.UI.HtmlControls.HtmlForm
Protected kommentar As System.Web.UI.HtmlControls.HtmlGenericControl
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
Dim s As String
s = "What is your name? <br><br><input runat='server' id='txtName'
type='text' ><asp:RequiredFieldValidator id='reqTxtName'
ControlToValidate='txtName' Display='dynamic' runat='server'>
Please enter your name.</asp:RequiredFieldValidator> <br><br><input
runat='server' type='submit' value=' OK ' ><br><br><asp:Label id='meldung'
runat='server' />"
form1.Controls.Add(Page.ParseControl(s))
If IsPostBack Then
Page.Validate()
If Page.IsValid Then
kommentar.InnerHtml &= "OK "
Else
kommentar.InnerHtml &= "Not OK "
End If
End If
End Sub
End Class
--- --- --- --- --- --- --- --- --- --- --- --- --- --- --- --- ---
This is the result:
The validation works correctly, but using "Page.IsValid" will ALWAYS return
false. Even if the
validation control works correctly and no warning appears, there will be the
message "Not OK "!!!
On the other side: When I use just this code, but don't use
Page.ParseControl, but
insert the code for the form and the validation-control right into the
aspx-Page, everything works
fine and Page.IsValid will always say correctly, whether the form is valid
or not.
Any idea?
Thank you
Matthias