在Form中驗証控制與自己加的驗証方法沖突的問題解決

原创 2006年05月26日 10:28:00

首先給一個建議:除非是很明確的服務器代碼錯誤,否則其它的所有的錯誤要看一下HTML源碼,發現很多人沒有這個習慣, 瀏覽器執行的是HTML源碼,因此客戶端任何情況,都可以在HTML源碼中得到反映。
這個問題很明顯是驗証失效,無非是在兩個地方,提交按鈕的onclick事件與Form的onsubmit,看源碼:

頁面中本來有一個Form1_onsubmit要驗証,又加上驗証控制的驗証:
<input type="image" name="ImageButton_Save" onclick="return Form1_submit(); if (typeof(Page_ClientValidate) == 'function') Page_ClientValidate(); "
注意這裡的return Form1_sumbit();是在服務器端中的代碼中通過這句加上的,原因是不能直接在aspx頁面中寫onclick事件(會被認作服務器事件)
this.ImageButton_Save.Attributes.Add("onclick","return Form1_onsubmit();");
初步判斷是這兩個驗証方法沖突,即隻要滿足第一個判斷,第二個就不管用了,是判斷順序有問題。

因此如果這裡把Form1_submit()放到後面是否就好了呢,嘗試將服務端的代碼改能如下:
this.ImageButton_Save.Attributes["onclick"] += "return Form1_onsubmit();");
仍不管用,看來驗証控制的代碼是後來加上去的。

最後考慮到驗証的另外一個地方:Form的onsubmit事件,查看HTML源碼如下:
onsubmit="if (!ValidatorOnSubmit()) return false;" 
同樣加上了驗証控制生成的代碼

不過這裡可以在aspx頁面中直接將onsubmit寫上:
<form language="javascript" id="Form1" onsubmit="return Form1_onsubmit();" method="post" runat="server">

然後最終生成的HTML源碼變成:
nsubmit="if (!ValidatorOnSubmit()) return false;return Form1_onsubmit();"
怎麼樣,我們自己加的Form1_onsubmit已經跑到後面了

再試一下效果,已經OK了。

ASP.NET驗証用戶自定義的安全性問題

如果你在ASP.net中引用自定義控件,那麼ASP.net在默認的情況下認為你自定義的控件是不安全的,你必須在ASP.net中將*.aspx(你引用自定義控件的頁面)在Page標簽處 將 valida...
  • zhiduoxing
  • zhiduoxing
  • 2007年03月19日 09:25
  • 601

身份証號碼驗証

 private string CheckCidInfo(string cid){string[] aCity = new string[]{null,null,null,null,null,null...
  • JustLovePro
  • JustLovePro
  • 2007年06月15日 08:24
  • 592

python http proxy 驗証

sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)     sock.connect(('172.17.5.53', 80)) so...
  • liukeforever
  • liukeforever
  • 2011年04月08日 16:23
  • 5243

完美解决表单被外部提交问题

原文来自http://www.icefire.cn/jvf/content/content.jsp?id=bc3f01b20a1a9fc3010a1bf1c4ad0002      如何防止表单被在网...
  • lostsky
  • lostsky
  • 2006年03月21日 18:39
  • 1004

DetailsView的數據驗証

     //驗証新增數據    protected void DetailsView1_ItemInserting(object sender, DetailsViewInsertEventArgs...
  • daqiaonanlu2000
  • daqiaonanlu2000
  • 2008年08月18日 16:39
  • 398

驗証TextBox輸入的文本

代碼如下:public partial class Textboxtext : Form    ...{        public Textboxtext()        ...{        ...
  • wwwiii520
  • wwwiii520
  • 2008年01月29日 18:21
  • 580

asp.net生成圖片驗証碼

ReportX2.5修改1、行列隐藏;2、导出Excel支持冻结窗口并提高效率;3、自定制打印预览窗口;如果还需要什么功能请回复此贴(会自动转到我的邮件)或发邮件(reportproj@yahoo.c...
  • jackeyabc
  • jackeyabc
  • 2008年03月06日 09:59
  • 473

喷墨墨水和纸张

喷墨墨水的好坏和纸张很有关系,纸张也是一门学问。我在三种不同的纸张上打印。有三种墨水:1、是丹俊的普通墨水(染料墨水),2、丹俊的专业墨水(染料墨水),3、是印维的颜料墨水,这几种都是水溶剂,非油溶剂...
  • flowingflying
  • flowingflying
  • 2011年02月27日 17:47
  • 2928

__doPostBack简单的使用方法

__doPostBack是最简单的使用方法是:1、在页面上划一个能产生 __dopostback函数的控件.(并不是所有的web控件都是用__dopostback产生事件回发),我个人喜欢用linkb...
  • DotNet1227
  • DotNet1227
  • 2007年09月20日 21:01
  • 813

一個簡單的驗証碼

网站上有很多登陸都用到了驗証碼,看著好玩自己也寫了個簡單了(好點的就要把驗証碼寫到圖片上去了,有點難度,還沒研究過)先搞個簡單的.Sub page_load(sender as object,e as...
  • jasonlee0927
  • jasonlee0927
  • 2004年10月26日 21:51
  • 654
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:在Form中驗証控制與自己加的驗証方法沖突的問題解決
举报原因:
原因补充:

(最多只允许输入30个字)