2010-04-26 63 views
0

我想在Visual Studio中使用RegularExpressionValidator控件來驗證電子郵件地址表達式的文本框。在MS .Net框架中使用RegularExpressionValidator

這裏是我的代碼(很基本的)

Email:  
    <input id="Text1" type="text" /><br /> 
    <br /> 
    <input id="Validate" type="button" value="Validate" runat="server" /><br /> 
    <br /> 
    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
     ErrorMessage="RegularExpressionValidator" ControlToValidate="Validate" 
     ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator> 

現在,當我設置的ControlToValidate要驗證,我得到了以下錯誤消息:

Server Error in '/' Application. 

控制 '驗證' 由ControlToValidate屬性引用'RegularExpressionValidator1'無法驗證。 描述:執行當前Web請求期間發生未處理的異常。請查看堆棧跟蹤以獲取有關該錯誤的更多信息以及源代碼的位置。

異常詳細信息:System.Web.HttpException:無法驗證'RegularExpressionValidator1'的ControlToValidate屬性引用的控件'驗證'。

源錯誤:

在當前web請求的執行過程中生成未處理的異常。關於異常的來源和位置的信息可以使用下面的異常堆棧跟蹤來標識。

堆棧跟蹤:

[HttpException(0X80004005):控制 '驗證' 通過的 'RegularExpressionValidator1' 不能被驗證ControlToValidate屬性引用] System.Web.UI.WebControls.BaseValidator.CheckControlValidationProperty(字符串名稱,String propertyName)+8734357 System.Web.UI.WebControls.BaseValidator.ControlPropertiesValid()+40 System.Web.UI.WebControls.BaseValidator.get_PropertiesValid()+21 System.Web.UI.WebControls.BaseValidator.OnPreRender (EventArgs e)+27 System.Web.UI.Control.PreRenderRecursiveInternal()+80 System.Web.UI.Control.PreRende rRecursiveInternal()+171 System.Web.UI.Control.PreRenderRecursiveInternal()+171 System.Web.UI.Page.ProcessRequestMain(布爾includeStagesBeforeAsyncPoint,布爾includeStagesAfterAsyncPoint)842

版本信息:Microsoft .NET Framework版本:2.0.50727.3607; ASP.NET版本:2.0.50727.3082

我曾嘗試過相同的機制,並已工作;但是,這次我在一臺新機器上運行IIS v5.1的WinXP Pro。

任何方向將不勝感激。

回答

3

您試圖驗證按鈕,這是沒有意義的,因此是例外。什麼,你可能是意做的是驗證文本框,在這種情況下,你的代碼更改爲:

Email:&nbsp; 
    <input id="Text1" type="text" runat="server" /><br /> 
    <br /> 
    <input id="Validate" type="button" value="Validate" runat="server" /><br /> 
    <br /> 
    <asp:RegularExpressionValidator ID="RegularExpressionValidator1" runat="server" 
     ErrorMessage="RegularExpressionValidator" ControlToValidate="Text1" 
     ValidationExpression="\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*"></asp:RegularExpressionValidator> 

你需要讓你的Text1控制服務器控制,因此它可以被驗證,然後更改ControlToValidate屬性指向Text1控制。

注:通常在ASP.NET中,你將有文本框控件作爲Web服務器的控制,就像這樣:

<asp:TextBox ID="Text1" runat="server" /> 
+0

不知道爲什麼我被驗證按鈕,但文本字段現在的作品。謝謝一堆! – 2010-04-27 17:49:24

1

你可以不驗證按鈕嗎?我認爲你只能驗證輸入字段。嘗試更改控件以驗證實際的輸入控件。