当前位置: 首页 > news >正文

常见的线下推广渠道有哪些海阳seo排名

常见的线下推广渠道有哪些,海阳seo排名,手机建网站软件,从零开始制作wordpress主题一 、实现的效果 我想对于ASP.NET的Validator控件已经熟悉的不能再熟悉了。我们 已经习惯了用Validator控件来验证我们在表单的输入#xff0c;并通过ValidationSummary来输出我们为Validator控件设置的Error message。不知道大家有没想过进一步改进一下我们的Validation来改…一 、实现的效果 我想对于ASP.NET的Validator控件已经熟悉的不能再熟悉了。我们 已经习惯了用Validator控件来验证我们在表单的输入并通过ValidationSummary来输出我们为Validator控件设置的Error message。不知道大家有没想过进一步改进一下我们的Validation来改善我们的User Experience。比如在ValidationSummary输出一个Link连接到对应的控件而不是显示单纯的Error message。 比如在上图中是一个典型的Login的Page。我们有两个必填的字段User name和Password。为此我定义两个RequiredFieldValidator。他们的Error message分别为”User name is mandatory!”和”Password is mandatory!”。在未输入任何值得前提下Click “Sign in”按钮Error Message被显示在ValidationSummary上面。不过和传统的Error message不同显示在ValidationSummary上的实际上是两个链接Click对应的Error message光标会设置到对应的Textbox上。比如上图所示Click ”User name is mandatory!”光标回到User name对应的Texbox。 二、具体实现 现在我们来简单叙述上面的效果是如果实现的在开始之前我想说的是方法非常简单—或许你已经猜到了 1首先来看看aspx。 %  Page LanguageC# AutoEventWireuptrue CodeFileLogin.aspx.cs InheritsLogin  % ! DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd html  xmlns http://www.w3.org/1999/xhtml head  id Head1  runat server      title Login / title      style  type text/css         body{}{font-family:Verdana; font-size:10px}         table{}{width:300px}         table tr{}{height:30px}         table td.firstColumn{}{width:100px; text-align:right}         table td.secondColumn{}{ text-align:left}         table span.asterisk{}{color:red}         table .textbox{}{width:150px; border:solid 1px #999999}         table .button{}{background-color: #00cc66;border:solid 1px #999999}         ul li{}{margin-bottom:5px}          ul li a{}{color:red; text-decoration:none}         ul li a:hover{}{text-decoration:underline}      / style         script  type text/javascript         function setFocus(control)        {            var controlToValidate  document.getElementById(control);            controlToValidate.focus();        }              / script / head body  style font-family: Verdana      form  id form1  runat server          div              table  cellpadding 0  cellspacing 5px                  tr                      td  colspan 2                          asp:ValidationSummary  runat server  ID vldLogin   /                      / td                  / tr                  tr                      td  class firstColumn                         User Name:  span  class asterisk nbsp; * / span / td                      td  class secondColumn                          asp:TextBox  runat server  ID txtUserName  CssClass textbox / asp:TextBox                          asp:RequiredFieldValidator  runat server  ID rqfUserName  ControlToValidate txtUserName  Display None / asp:RequiredFieldValidator                          asp:CustomValidator  runat server  ID ctmUserName   Display None  OnServerValidate ctmUserName_ServerValidate  ControlToValidate txtUserName   / asp:CustomValidator                      / td                  / tr                  tr                      td  class firstColumn                         Password:  span  class asterisk nbsp; * / span / td                      td  class secondColumn                          asp:TextBox  runat server  ID txtPassword  TextMode Password  CssClass textbox / asp:TextBox                          asp:RequiredFieldValidator  runat server  ID rqfPassword  ControlToValidate txtPassword  Display None   / asp:RequiredFieldValidator                      / td                  / tr                  tr                      td  colspan 2  align center                          asp:Button  runat server  ID btnSignIn  Text Sign in  CssClass button   / nbsp;nbsp;nbsp;                          asp:Button  runat server  ID ButtonCancel  Text Cancel  CausesValidation false                             CssClass button   /                      / td                  / tr              / table          / div      / form / body / html 在看到了上面的Screen shot之后再看看上面的Html结构清晰得一目了然。所以我就不再进一步解释了。在这里我只需要提提定义在aspx的一段javascript functionsetFocus。通过它把focus设置到指定的控件。 script  type text/javascript         function setFocus(control)        {            var controlToValidate  document.getElementById(control);            controlToValidate.focus();        }            / script 2接着我们来看看code behind。 using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Web.UI.HtmlControls; public partial class Login : System.Web.UI.Page {     protected void Page_Load(object sender, EventArgs e)     {         if (this.IsPostBack)         {             return;         }         this.rqfUserName.ErrorMessage  string.Format({0} is mandatory!, User name);         this.rqfPassword.ErrorMessage  string.Format({0} is mandatory!, Password);         this.ctmUserName.ErrorMessage  Such a user has not registered!;         this.MakeClickableErrorMessage();     }     private void MakeClickableErrorMessage()     {         foreach (BaseValidator validator in this.Validators)         {             if (validator.ControlToValidate  string.Empty)             {                 continue;             }             string clientID  this.FindControl(validator.ControlToValidate).ClientID;             string script  string.Format(a href /javascript:setFocus({0});/{1}/a, clientID, validator.ErrorMessage);             validator.ErrorMessage  script;         }     }     protected void ctmUserName_ServerValidate(object source, ServerValidateEventArgs args)     {         if (this.txtUserName.Text.Trim() ! adm)         {             args.IsValid  false;             return;         }         args.IsValid  true;     } } Code也简单得一塌糊涂除了MakeClickableErrorMessage这个Method其他的都不值一提。 private   void  MakeClickableErrorMessage()      {         foreach (BaseValidator validator in this.Validators)         {             if (validator.ControlToValidate  string.Empty)             {                 continue;             }             string clientID  this.FindControl(validator.ControlToValidate).ClientID;             string script  string.Format(a href /javascript:setFocus({0});/{1}/a, clientID, validator.ErrorMessage);             validator.ErrorMessage  script;         }     } 显示在ValidationSummary中原本简单的literal error message就是通过上面的这个MakeClickableErrorMessage转变成hyperlink的。在上面的code中我遍历page中的每个Validator control。如果该Validator control有对应ControlToValidate对于一个Validator control来说ControlToValidate并非一个必需的property如果没有指定该property其值为空字符串直接进入下一个循环。然后我把原来只是弹出的文本转变成一个a/a然后再将其重新赋值给对应的Validator contorl的ErrorMessage property。 比如对于rqfUserName RequiredFieldValidator来说原来的Error message是”User name is mandatory!”,那么现在的Error message变成了 a  href ”javascript:  setFocus(‘txtUserName’);”  User name is mandatory! / a 三、ASP.NET是如何实现Validation的 上面只是一个简单的小窍门我们以这个Sample为例来进一步介绍ASP.NET如何尽心Validation的。为了简单起见在这里我没法讨论所有的Validator control。只介绍RequiredFieldValidator和CustomValidator这两种Validator control的处理流程。 1Client side Validation 我们通过IE来浏览上面的Page通过参看Source code可以看到最后Render出来的html !DOCTYPE html PUBLIC -//W3C//DTD XHTML 1.0 Transitional//EN http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd html xmlnshttp://www.w3.org/1999/xhtml head idHead1title     Login /title     style typetext/css         body{}{font-family:Verdana; font-size:10px}         table{}{width:300px}         table tr{}{height:30px}         table td.firstColumn{}{width:100px; text-align:right}         table td.secondColumn{}{ text-align:left}         table span.asterisk{}{color:red}         table .textbox{}{width:150px; border:solid 1px #999999}         table .button{}{background-color: #00cc66;border:solid 1px #999999}         ul li{}{margin-bottom:5px}          ul li a{}{color:red; text-decoration:none}         ul li a:hover{}{text-decoration:underline}     /style       script typetext/javascript         function setFocus(control)        {            var controlToValidate  document.getElementById(control);            controlToValidate.focus();        }           /script /head body stylefont-family: Verdana     form nameform1 methodpost actionLogin.aspx onsubmitjavascript:return WebForm_OnSubmit(); idform1 div input typehidden name__EVENTTARGET id__EVENTTARGET value / input typehidden name__EVENTARGUMENT id__EVENTARGUMENT value / input typehidden name__VIEWSTATE id__VIEWSTATE value/wEPDwUKMTg3OTM1NTM2MA9kFgICAw9kFgYCBQ8PFgIeDEVycm9yTWVzc2FnZQVKPGEgaHJlZj0gImphdmFzY3JpcHQ6c2V0Rm9jdXMoJ3R4dFVzZXJOYW1lJyk7Ij5Vc2VyIG5hbWUgaXMgbWFuZGF0b3J5ITwvYT5kZAIHDw8WAh8ABVI8YSBocmVmPSAiamF2YXNjcmlwdDpzZXRGb2N1cygndHh0VXNlck5hbWUnKTsiPlN1Y2ggYSB1c2VyIGhhcyBub3QgcmVnaXN0ZXJlZCE8L2EZGQCCw8PFgIfAAVJPGEgaHJlZj0gImphdmFzY3JpcHQ6c2V0Rm9jdXMoJ3R4dFBhc3N3b3JkJyk7Ij5QYXNzd29yZCBpcyBtYW5kYXRvcnkhPC9hPmRkZLFuksmAaQN5sw8KrkFk3GqgSn / /div script typetext/javascript !-- var theForm  document.forms[form1]; if (!theForm) {     theForm  document.form1; } function __doPostBack(eventTarget, eventArgument) {     if (!theForm.onsubmit || (theForm.onsubmit() ! false)) {         theForm.__EVENTTARGET.value  eventTarget;         theForm.__EVENTARGUMENT.value  eventArgument;         theForm.submit();     } } // -- /script script src/Artech.ClickableValidationSummary/WebResource.axd?d07ZNXubMk-rxUjn0jMywXg2amp;t632969324944906146 typetext/javascript/script script src/Artech.ClickableValidationSummary/WebResource.axd?d5q3WmDnqxzNvEfUc_QbMe5qdQO1LUQ4P7mwuv6CrIMk1amp;t632969324944906146 typetext/javascript/script script typetext/javascript !-- function WebForm_OnSubmit() { if (typeof(ValidatorOnSubmit)  function  ValidatorOnSubmit()  false) return false; return true; } // -- /script         div             table cellpadding0 cellspacing5px                 tr                     td colspan2                         div idvldLogin stylecolor:Red;display:none; /div                     /td                 /tr                 tr                     td classfirstColumn                         User Name: span classasterisknbsp;*/span/td                     td classsecondColumn                         input nametxtUserName typetext idtxtUserName classtextbox /                         span idrqfUserName stylecolor:Red;display:none;/span                         span idctmUserName stylecolor:Red;display:none;/span                     /td                 /tr                 tr                     td classfirstColumn                         Password: span classasterisknbsp;*/span/td                     td classsecondColumn                         input nametxtPassword typepassword idtxtPassword classtextbox /                         span idrqfPassword stylecolor:Red;display:none;/span                     /td                 /tr                 tr                     td colspan2 aligncenter                         input typesubmit namebtnSignIn valueSign in onclickjavascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(quot;btnSignInquot;, quot;quot;, true, quot;quot;, quot;quot;, false, false)) idbtnSignIn classbutton /nbsp;nbsp;nbsp;                         input typesubmit nameButtonCancel valueCancel idButtonCancel classbutton /                     /td                 /tr             /table         /div     script typetext/javascript !-- var Page_ValidationSummaries   new Array(document.getElementById(vldLogin)); var Page_Validators   new Array(document.getElementById(rqfUserName), document.getElementById(ctmUserName), document.getElementById(rqfPassword)); // -- /script script typetext/javascript !-- var rqfUserName  document.all ? document.all[rqfUserName] : document.getElementById(rqfUserName); rqfUserName.controltovalidate  txtUserName; rqfUserName.errormessage  a href /javascript:setFocus(/txtUserName/);/User name is mandatory!/a; rqfUserName.display  None; rqfUserName.evaluationfunction  RequiredFieldValidatorEvaluateIsValid; rqfUserName.initialvalue  ; var ctmUserName  document.all ? document.all[ctmUserName] : document.getElementById(ctmUserName); ctmUserName.controltovalidate  txtUserName; ctmUserName.errormessage  a href /javascript:setFocus(/txtUserName/);/Such a user has not registered!/a; ctmUserName.display  None; ctmUserName.evaluationfunction  CustomValidatorEvaluateIsValid; var rqfPassword  document.all ? document.all[rqfPassword] : document.getElementById(rqfPassword); rqfPassword.controltovalidate  txtPassword; rqfPassword.errormessage  a href /javascript:setFocus(/txtPassword/);/Password is mandatory!/a; rqfPassword.display  None; rqfPassword.evaluationfunction  RequiredFieldValidatorEvaluateIsValid; rqfPassword.initialvalue  ; // -- /script div     input typehidden name__EVENTVALIDATION id__EVENTVALIDATION value/wEWBQL7uOMiAqXVsrMJArWptJELAsP3i5QHAv23gdwNI0m2v8hOJGGPTPLYqDLAkZE0nKU / /div script typetext/javascript !-- var Page_ValidationActive  false; if (typeof(ValidatorOnLoad)  function) {     ValidatorOnLoad(); } function ValidatorOnSubmit() {     if (Page_ValidationActive) {         return ValidatorCommonOnSubmit();     }     else {         return true;     } } // -- /script         /form /body /html 我们从中提取对Validation有用的信息。 首先我们会看到有两个JavaScript被引用 script  src /Artech.ClickableValidationSummary/WebResource.axd?d07ZNXubMk-rxUjn0jMywXg2amp;t632969324944906146  type text/javascript / script script  src /Artech.ClickableValidationSummary/WebResource.axd?d5q3WmDnqxzNvEfUc_QbMe5qdQO1LUQ4P7mwuv6CrIMk1amp;t632969324944906146  type text/javascript / script 这两个JavaScript由ASP.NET生成。尤其内容较多在这里先不列出他们的内容等下面真正要使用到其中定义的JavaScript 在列出来。我们现在姑且称它们为JavaScript1和JavaScript2。 在下面一段JavaScript中为3个Validator control定义了3个Client端的对象对象的名称和控件名称同名并设置相关的属性controltovalidateerrormessagedisplayevaluationfunction。其中evaluationfunction为进行Validation的function的名称. script  type text/javascript !-- var rqfUserName  document.all ? document.all[rqfUserName] : document.getElementById(rqfUserName); rqfUserName.controltovalidate  txtUserName; rqfUserName.errormessage  a href /javascript:setFocus(/txtUserName/);/User name is mandatory!/a; rqfUserName.display  None; rqfUserName.evaluationfunction  RequiredFieldValidatorEvaluateIsValid; rqfUserName.initialvalue  ; var ctmUserName  document.all ? document.all[ctmUserName] : document.getElementById(ctmUserName); ctmUserName.controltovalidate  txtUserName; ctmUserName.errormessage  a href /javascript:setFocus(/txtUserName/);/Such a user has not registered!/a; ctmUserName.display  None; ctmUserName.evaluationfunction  CustomValidatorEvaluateIsValid; var rqfPassword  document.all ? document.all[rqfPassword] : document.getElementById(rqfPassword); rqfPassword.controltovalidate  txtPassword; rqfPassword.errormessage  a href /javascript:setFocus(/txtPassword/);/Password is mandatory!/a; rqfPassword.display  None; rqfPassword.evaluationfunction  RequiredFieldValidatorEvaluateIsValid; rqfPassword.initialvalue  ; // -- / script 我们还发现通过Javascript定义了两个Array对象Page_ValidationSummaries和Page_Validators。这两个Array用于保存Page中的所有的ValidationSummary和Validator control。 script  type text/javascript !-- var Page_ValidationSummaries   new Array(document.getElementById(vldLogin)); var Page_Validators   new Array(document.getElementById(rqfUserName), document.getElementById(ctmUserName), document.getElementById(rqfPassword)); // -- / script 我们知道所有的Validation操作都是在Click “Sign In” Button之后进行的。我们来看看他是如何定义的 input  type submit  name btnSignIn  value Sign in  onclick javascript:WebForm_DoPostBackWithOptions(new WebForm_PostBackOptions(quot;btnSignInquot;, quot;quot;, true, quot;quot;, quot;quot;, false, false))  id btnSignIn  class button   / 通过onclick事件我们可以看到一个命名为WebForm_DoPostBackWithOptions的javascript function被调用该function接收一个称为WebForm_PostBackOptions类型的对象。该类型被定一个在JavaScript1中还记得JavaScript1指的是什么吗 上溯到第三段。下面是他的定义 function  WebForm_PostBackOptions(eventTarget, eventArgument, validation, validationGroup, actionUrl, trackFocus, clientSubmit)  {     this.eventTarget  eventTarget;     this.eventArgument  eventArgument;     this.validation  validation;     this.validationGroup  validationGroup;     this.actionUrl  actionUrl;     this.trackFocus  trackFocus;     this.clientSubmit  clientSubmit; } 该对象具有这样的表述的是关于Postback context的一些信息比如 eventTargetEvent触发的control当前为” btnSignIn”。 eventArgumentEvent额外的参数, 当前为””。 validation是否进行Validation当前为true。 validationGroupeventTarget 对应的Validation group这是ASP.NET 2.0的新特性当当前为””,因为我没有设置btnSignIn的ValidationGroup的property。 actionUrl表单被提交的Url就像asp中Form的action一样。ASP.NET 1.x不提供cross-page的提交在2.0中提供了此功能当前为””, 我没有进行cross-page的提交。 trackFocus是否进行焦点追踪当前为false。 clientSubmit是否通过form submit导致Postback当前为false。 我们再来看看WebForm_DoPostBackWithOptions像WebForm_PostBackOptions一样该function同样被定义在JavaScript1中。 function  WebForm_DoPostBackWithOptions(options)  {     var validationResult  true;     if (options.validation) {         if (typeof(Page_ClientValidate)  function) {             validationResult  Page_ClientValidate(options.validationGroup);         }     }     if (validationResult) {         if ((typeof(options.actionUrl) ! undefined)  (options.actionUrl ! null)  (options.actionUrl.length  0)) {             theForm.action  options.actionUrl;         }         if (options.trackFocus) {             var lastFocus  theForm.elements[__LASTFOCUS];             if ((typeof(lastFocus) ! undefined)  (lastFocus ! null)) {                 if (typeof(document.activeElement)  undefined) {                     lastFocus.value  options.eventTarget;                 }                 else {                     var active  document.activeElement;                     if ((typeof(active) ! undefined)  (active ! null)) {                         if ((typeof(active.id) ! undefined)  (active.id ! null)  (active.id.length  0)) {                             lastFocus.value  active.id;                         }                         else if (typeof(active.name) ! undefined) {                             lastFocus.value  active.name;                         }                     }                 }             }         }     }     if (options.clientSubmit) {         __doPostBack(options.eventTarget, options.eventArgument);     } } 在开始的时候调用Page_ClientValidate进行Client端的Validation。在这里执行所有的Client端的Validation。我们来着重分析上面的javascript看看具体的流程。Page_ClientValidate被定义在Javascript2中。 function  Page_ClientValidate(validationGroup)  {     Page_InvalidControlToBeFocused  null;     if (typeof(Page_Validators)  undefined) {         return true;     }     var i;     for (i  0; i  Page_Validators.length; i) {         ValidatorValidate(Page_Validators[i], validationGroup, null);     }     ValidatorUpdateIsValid();     ValidationSummaryOnSubmit(validationGroup);     Page_BlockSubmit  !Page_IsValid;     return Page_IsValid; } 上面的code中首先通过Page_Validators判断是否Page中定义了Validator control。我们在预先定义了Page_Validators Array还记得我们之前介绍的两个Array——Page_ValidationSummaries和Page_Validators吗。虽有遍历所有的Validator control并调用ValidatorValidate方法执行每个Validator control的Client端的Validation。我们进一步看看ValidatorValidate又是如何定义的ValidatorValidate定义在Javascript2中 function  ValidatorValidate(val, validationGroup, event)  {     val.isvalid  true;     if ((typeof(val.enabled)  undefined || val.enabled ! false)  IsValidationGroupMatch(val, validationGroup)) {         if (typeof(val.evaluationfunction)  function) {             val.isvalid  val.evaluationfunction(val);             if (!val.isvalid  Page_InvalidControlToBeFocused  null                  typeof(val.focusOnError)  string  val.focusOnError  t) {                 ValidatorSetFocus(val, event);             }         }     }     ValidatorUpdateDisplay(val); } 首先通过IsValidationGroupMatch判断Validator control的ValidationGroup是否和触发Postaback的Control对应的ValidationGroup相互匹配。因为只有在匹配的前提下才进行相关Validator control的validation。然后调用validator control的evaluationfunction function来进行validation。通过前面的分析我们知道RequiredFieldValidator的evaluationfunction为RequiredFieldValidatorEvaluateIsValid而CustomValidator的evaluationfunction为CustomValidatorEvaluateIsValid。我们来看看这两个function是如何定义的。他们都定义在Javascript2中。 RequiredFieldValidatorEvaluateIsValid通过正则表达式验证是否填入了由意义的值。 function  RequiredFieldValidatorEvaluateIsValid(val)  {     return (ValidatorTrim(ValidatorGetValue(val.controltovalidate)) !       ValidatorTrim(val.initialvalue)) } function  ValidatorGetValue(id)  {     var control;     control  document.getElementById(id);     if (typeof(control.value)  string) {         return control.value;     }     return ValidatorGetValueRecursive(control); } function  ValidatorGetValueRecursive(control) {     if (typeof(control.value)  string  (control.type ! radio || control.checked  true)) {         return control.value;     }     var i, val;     for (i  0; icontrol.childNodes.length; i) {         val  ValidatorGetValueRecursive(control.childNodes[i]);         if (val ! ) return val;     }     return ; } function  ValidatorTrim(s)  {     var m  s.match(/^/s*(/S(/s/S)*)/s*$/);     return (m  null) ?  : m[1]; } CustomValidatorEvaluateIsValid实际上就是调用我们为CustomValidator设置的ClientValidationFunction。 function  CustomValidatorEvaluateIsValid(val)  {     var value  ;     if (typeof(val.controltovalidate)  string) {         value  ValidatorGetValue(val.controltovalidate);         if ((ValidatorTrim(value).length  0)              ((typeof(val.validateemptytext) ! string) || (val.validateemptytext ! true))) {             return true;         }     }     var args  { Value:value, IsValid:true };     if (typeof(val.clientvalidationfunction)  string) {         eval(val.clientvalidationfunction  (val, args) ;);     }     return args.IsValid; } 在ValidatorValidate中当我们通过调用各个Validator control的evaluationfunction来进行Client端的验证后对于没有通过验证的Validator control通过调用ValidatorSetFocus设置相应控件的焦点。在这里就不在深入探讨了。接着通过调用ValidatorUpdateDisplay来根据我们制定的Display和不同浏览器来设置Error message的显示方式。 function  ValidatorUpdateDisplay(val)  {     if (typeof(val.display)  string) {         if (val.display  None) {             return;         }         if (val.display  Dynamic) {             val.style.display  val.isvalid ? none : inline;             return;         }     }     if ((navigator.userAgent.indexOf(Mac)  -1)          (navigator.userAgent.indexOf(MSIE)  -1)) {         val.style.display  inline;     }     val.style.visibility  val.isvalid ? hidden : visible; } 实际上到现在为止所有的Validation工作已经完成。我们来看看Error message是如何显示的。所以我们要看看ValidatorUpdateDisplay的定义了。 分析完ValidatorValidate我们在回到Page_ClientValidate上面。现在我们接着分析一下的执行流程。通过调用ValidatorValidate执行完各个Validator control的验证后接着调用的是ValidatorUpdateIsValid()和ValidationSummaryOnSubmit(validationGroup)。ValidatorUpdateIsValid通过遍历每个Validator control来查看他们是否通过验证最终确定这个Page是否通过验证。ValidationSummaryOnSubmit通过拼接字符串的形式在ValidationSummary显示对应的Error message。这正是我们可我们Error message写成hyperlink的原因所在。 function  ValidatorUpdateIsValid()  {     Page_IsValid  AllValidatorsValid(Page_Validators); } function  AllValidatorsValid(validators)  {     if ((typeof(validators) ! undefined)  (validators ! null)) {         var i;         for (i  0; i  validators.length; i) {             if (!validators[i].isvalid) {                 return false;             }         }     }     return true; } function  ValidationSummaryOnSubmit(validationGroup)  {     if (typeof(Page_ValidationSummaries)  undefined)         return;     var summary, sums, s;     for (sums  0; sums  Page_ValidationSummaries.length; sums) {         summary  Page_ValidationSummaries[sums];         summary.style.display  none;         if (!Page_IsValid  IsValidationGroupMatch(summary, validationGroup)) {             var i;             if (summary.showsummary ! False) {                 summary.style.display  ;                 if (typeof(summary.displaymode) ! string) {                     summary.displaymode  BulletList;                 }                 switch (summary.displaymode) {                     case List:                         headerSep  br;                         first  ;                         pre  ;                         post  br;                         end  ;                         break;                     case BulletList:                     default:                         headerSep  ;                         first  ul;                         pre  li;                         post  /li;                         end  /ul;                         break;                     case SingleParagraph:                         headerSep   ;                         first  ;                         pre  ;                         post   ;                         end  br;                         break;                 }                 s  ;                 if (typeof(summary.headertext)  string) {                     s  summary.headertext  headerSep;                 }                 s  first;                 for (i0; iPage_Validators.length; i) {                     if (!Page_Validators[i].isvalid  typeof(Page_Validators[i].errormessage)  string) {                         s  pre  Page_Validators[i].errormessage  post;                     }                 }                 s  end;                 summary.innerHTML  s;                 window.scrollTo(0,0);             }             if (summary.showmessagebox  True) {                 s  ;                 if (typeof(summary.headertext)  string) {                     s  summary.headertext  /r/n;                 }                 var lastValIndex  Page_Validators.length - 1;                 for (i0; ilastValIndex; i) {                     if (!Page_Validators[i].isvalid  typeof(Page_Validators[i].errormessage)  string) {                         switch (summary.displaymode) {                             case List:                                 s  Page_Validators[i].errormessage;                                 if (i  lastValIndex) {                                     s  /r/n;                                 }                                 break;                             case BulletList:                             default:                                 s  -   Page_Validators[i].errormessage;                                 if (i  lastValIndex) {                                     s  /r/n;                                 }                                 break;                             case SingleParagraph:                                 s  Page_Validators[i].errormessage   ;                                 break;                         }                     }                 }                 alert(s);             }         }     } } 2 Server side Validation 前面我们花了很大的篇幅介绍了Client端的Validation通过介绍我们知道了Client端的validation和Error message的显示均由Javascript来完成。现在我们来简单看看Server 端的Validation。当client 端__doPostBack被调用实现向Server端的Postback。具体的Postback可以参考我的文章浅谈ASP.NET的Postback。Validator Contro 的Server端的ValidationError message直接通过Html显示出来。 比如下面是一段CustomValidator的Validation。 protected   void  ctmUserName_ServerValidate( object  source, ServerValidateEventArgs args)      {         if (this.txtUserName.Text.Trim() ! adm)         {             args.IsValid  false;             return;         }         args.IsValid  true;     } 如果上面的Validation没有通过最终render在client段的将有下面一段Html。
http://www.tj-hxxt.cn/news/228337.html

相关文章:

  • 工作证明范本谷歌seo服务公司
  • 响应式网站企业成都花园设计公司
  • 检测网站是否为WordPress网站开发和程序开发
  • 郑州网站建设zzjisu合肥网站优化seo
  • asp.net做购物网站营销词汇100个
  • 陕西网站建设方案优化win2012 iis添加网站
  • 网站开发招标评分标准做兽设的网站
  • 长春市宽城区建设局网站wordpress 优化
  • 搭建专业网站服务器网站建设需要的资料
  • 公众电影网站怎么做保定网站报价
  • 手机网站自适应分辨率网页设计要学的课程
  • 微信网站背景图片长春做网站推广
  • 有哪些网站免费做推广如何自己做官网首页
  • 花都低价网站建设应用开发者
  • 群辉做网站服务器交易网站建设需要学什么
  • 网站开发商业机密多语言网站 用什么cms
  • 越秀低价网站建设wordpress导航添加图片
  • iis7.5 网站打不开本地生活服务小程序
  • 高质量的赣州网站建设WordPress标题别名自动翻译插件
  • 做网站用到ps么简单网页
  • 做网站的荣誉证书关键词推广怎么做
  • 网站建设感谢信模板网站建设教程
  • 合肥seo网站建设视频上传网站源码
  • 东莞响应式网站哪家好网络营销发展的趋势
  • 网站页面头部设计说明凤阳县建设局网站
  • 普通网站成微网站开发上海企业体检
  • 做网站的公司 杭州建设好网站能赚到钱吗?
  • 中国万网网站空间申请wordpress wp list categories
  • 网站建设总结体会wordpress修改首页
  • 淘宝上做的网站 域名到期可以自己续费吗朗坤智能企业管理系统