I
ilockett
The background:
I have a web app with a simple master page that contains just one
content placeholder.
I have created a web form that then uses this master page. Within the
content placeholder, I have placed a Login control (Login1) and a
ValidationSummary control.
I have set the ValidationSummary's ValidationGroup property equal to
"Login1".
The problem:
The validation summary is not firing when a login textbox is left
blank.
What I have found:
I put the Login control and ValidationSummary control in a separate
page that uses no masterpage/content placeholders - and it works fine.
So it seems the issue begins with the master page/content involvement.
I looked at the HTML source on both pages and this throws up what I
think is causing the problem - but I'm not sure how to resolve it!
In the non-master page file, you get the following markup:
<script type="text/javascript">
<!--
var Login1_UserNameRequired = document.all ?
document.all["Login1_UserNameRequired"] :
document.getElementById("Login1_UserNameRequired");
Login1_UserNameRequired.controltovalidate = "Login1_UserName";
Login1_UserNameRequired.errormessage = "User Name is required.";
Login1_UserNameRequired.validationGroup = "Login1";
Login1_UserNameRequired.evaluationfunction =
"RequiredFieldValidatorEvaluateIsValid";
Login1_UserNameRequired.initialvalue = "";
var Login1_PasswordRequired = document.all ?
document.all["Login1_PasswordRequired"] :
document.getElementById("Login1_PasswordRequired");
Login1_PasswordRequired.controltovalidate = "Login1_Password";
Login1_PasswordRequired.errormessage = "Password is required.";
Login1_PasswordRequired.validationGroup = "Login1";
Login1_PasswordRequired.evaluationfunction =
"RequiredFieldValidatorEvaluateIsValid";
Login1_PasswordRequired.initialvalue = "";
var ValidationSummary1 = document.all ?
document.all["ValidationSummary1"] :
document.getElementById("ValidationSummary1");
ValidationSummary1.validationGroup = "Login1";
// -->
</script>
However, when I use the master page code, you get:
<script type="text/javascript">
<!--
var ctl00_ContentPlaceHolder1_Login1_UserNameRequired = document.all ?
document.all["ctl00_ContentPlaceHolder1_Login1_UserNameRequired"] :
document.getElementById("ctl00_ContentPlaceHolder1_Login1_UserNameRequired");
ctl00_ContentPlaceHolder1_Login1_UserNameRequired.controltovalidate =
"ctl00_ContentPlaceHolder1_Login1_UserName";
ctl00_ContentPlaceHolder1_Login1_UserNameRequired.errormessage = "User
Name is required.";
ctl00_ContentPlaceHolder1_Login1_UserNameRequired.validationGroup =
"ctl00$ContentPlaceHolder1$Login1";
ctl00_ContentPlaceHolder1_Login1_UserNameRequired.evaluationfunction =
"RequiredFieldValidatorEvaluateIsValid";
ctl00_ContentPlaceHolder1_Login1_UserNameRequired.initialvalue = "";
var ctl00_ContentPlaceHolder1_Login1_PasswordRequired = document.all ?
document.all["ctl00_ContentPlaceHolder1_Login1_PasswordRequired"] :
document.getElementById("ctl00_ContentPlaceHolder1_Login1_PasswordRequired");
ctl00_ContentPlaceHolder1_Login1_PasswordRequired.controltovalidate =
"ctl00_ContentPlaceHolder1_Login1_Password";
ctl00_ContentPlaceHolder1_Login1_PasswordRequired.errormessage =
"Password is required.";
ctl00_ContentPlaceHolder1_Login1_PasswordRequired.validationGroup =
"ctl00$ContentPlaceHolder1$Login1";
ctl00_ContentPlaceHolder1_Login1_PasswordRequired.evaluationfunction =
"RequiredFieldValidatorEvaluateIsValid";
ctl00_ContentPlaceHolder1_Login1_PasswordRequired.initialvalue = "";
var ctl00_ContentPlaceHolder1_ValidationSummary1 = document.all ?
document.all["ctl00_ContentPlaceHolder1_ValidationSummary1"] :
document.getElementById("ctl00_ContentPlaceHolder1_ValidationSummary1");
ctl00_ContentPlaceHolder1_ValidationSummary1.validationGroup =
"ContentPlaceHolder1.Login1";
// -->
</script>
It seems that the ValidationGroup for the internal controls of the
Login control has been changed from "Login1" to
"ctl00$ContentPlaceHolder1$Login1" causing a mis-match between the
Login control and ValidationSummary.
Is there a way of rectifying this?
Many thanks in hope of a reply!!
Ian
I have a web app with a simple master page that contains just one
content placeholder.
I have created a web form that then uses this master page. Within the
content placeholder, I have placed a Login control (Login1) and a
ValidationSummary control.
I have set the ValidationSummary's ValidationGroup property equal to
"Login1".
The problem:
The validation summary is not firing when a login textbox is left
blank.
What I have found:
I put the Login control and ValidationSummary control in a separate
page that uses no masterpage/content placeholders - and it works fine.
So it seems the issue begins with the master page/content involvement.
I looked at the HTML source on both pages and this throws up what I
think is causing the problem - but I'm not sure how to resolve it!
In the non-master page file, you get the following markup:
<script type="text/javascript">
<!--
var Login1_UserNameRequired = document.all ?
document.all["Login1_UserNameRequired"] :
document.getElementById("Login1_UserNameRequired");
Login1_UserNameRequired.controltovalidate = "Login1_UserName";
Login1_UserNameRequired.errormessage = "User Name is required.";
Login1_UserNameRequired.validationGroup = "Login1";
Login1_UserNameRequired.evaluationfunction =
"RequiredFieldValidatorEvaluateIsValid";
Login1_UserNameRequired.initialvalue = "";
var Login1_PasswordRequired = document.all ?
document.all["Login1_PasswordRequired"] :
document.getElementById("Login1_PasswordRequired");
Login1_PasswordRequired.controltovalidate = "Login1_Password";
Login1_PasswordRequired.errormessage = "Password is required.";
Login1_PasswordRequired.validationGroup = "Login1";
Login1_PasswordRequired.evaluationfunction =
"RequiredFieldValidatorEvaluateIsValid";
Login1_PasswordRequired.initialvalue = "";
var ValidationSummary1 = document.all ?
document.all["ValidationSummary1"] :
document.getElementById("ValidationSummary1");
ValidationSummary1.validationGroup = "Login1";
// -->
</script>
However, when I use the master page code, you get:
<script type="text/javascript">
<!--
var ctl00_ContentPlaceHolder1_Login1_UserNameRequired = document.all ?
document.all["ctl00_ContentPlaceHolder1_Login1_UserNameRequired"] :
document.getElementById("ctl00_ContentPlaceHolder1_Login1_UserNameRequired");
ctl00_ContentPlaceHolder1_Login1_UserNameRequired.controltovalidate =
"ctl00_ContentPlaceHolder1_Login1_UserName";
ctl00_ContentPlaceHolder1_Login1_UserNameRequired.errormessage = "User
Name is required.";
ctl00_ContentPlaceHolder1_Login1_UserNameRequired.validationGroup =
"ctl00$ContentPlaceHolder1$Login1";
ctl00_ContentPlaceHolder1_Login1_UserNameRequired.evaluationfunction =
"RequiredFieldValidatorEvaluateIsValid";
ctl00_ContentPlaceHolder1_Login1_UserNameRequired.initialvalue = "";
var ctl00_ContentPlaceHolder1_Login1_PasswordRequired = document.all ?
document.all["ctl00_ContentPlaceHolder1_Login1_PasswordRequired"] :
document.getElementById("ctl00_ContentPlaceHolder1_Login1_PasswordRequired");
ctl00_ContentPlaceHolder1_Login1_PasswordRequired.controltovalidate =
"ctl00_ContentPlaceHolder1_Login1_Password";
ctl00_ContentPlaceHolder1_Login1_PasswordRequired.errormessage =
"Password is required.";
ctl00_ContentPlaceHolder1_Login1_PasswordRequired.validationGroup =
"ctl00$ContentPlaceHolder1$Login1";
ctl00_ContentPlaceHolder1_Login1_PasswordRequired.evaluationfunction =
"RequiredFieldValidatorEvaluateIsValid";
ctl00_ContentPlaceHolder1_Login1_PasswordRequired.initialvalue = "";
var ctl00_ContentPlaceHolder1_ValidationSummary1 = document.all ?
document.all["ctl00_ContentPlaceHolder1_ValidationSummary1"] :
document.getElementById("ctl00_ContentPlaceHolder1_ValidationSummary1");
ctl00_ContentPlaceHolder1_ValidationSummary1.validationGroup =
"ContentPlaceHolder1.Login1";
// -->
</script>
It seems that the ValidationGroup for the internal controls of the
Login control has been changed from "Login1" to
"ctl00$ContentPlaceHolder1$Login1" causing a mis-match between the
Login control and ValidationSummary.
Is there a way of rectifying this?
Many thanks in hope of a reply!!
Ian