想象一下聯繫表單的情況,即要收集數據並通過電子郵件將數據進一步傳輸到適當的地址。其中一個重要字段要求提供電子郵件地址,這對於回調回撥非常重要。手動顯示字段驗證程序(ASP.NET/C#)
所以說我使用RequiredFieldValidator
檢查郵件地址字段中的東西,任何東西的輸入;進一步檢查代碼將確定提供的郵件地址是否可用。
鑑於這兩項檢查本質上是驗證,我只想重用我的代碼隱藏中的RequiredFieldValidator
; 這可能嗎?
例如,一些簡單的:
MyValidator.Show();
return;
我過去做的是增加一個Label
的形式爲好,而只使用了類似的策略,僅使控制可見根據需要並返回。理想情況下,我想擺脫這一切,只需使用一個控件輸出我的錯誤消息。
對於當前代碼的想法,下面是一個骨骼上市,其中,即使是這樣,在其整體的概念:
內頁:
<asp:TextBox runat="server" ID="MailAddressTextBox" />
<asp:RequiredFieldValidator runat="server" ID="MailAddressValidator" ErrorMessage="Enter a valid mail address" ControlToValidate="MailAddressTextBox" />
<asp:Label runat="server" ID="MailAddressError" Text="Enter a valid mail address" Visible="false" />
而且代碼 - 中背後:
MailAddress enquirerMail;
try
{
enquirerMail = new MailAddress(MailAddressTextBox.Text);
}
catch
{
MailAddressError.Visible = true;
return;
}
與隱藏/辦法顯示錯誤的標籤,較明顯的額外控制的其他的陷阱,是他們知名度的維護,也是一個標籤每個錯誤或消息列表以及代碼更改顯示。至少在這個特定的例子中,多個驗證器是我想要避免的,一個RegularExpressionValidator
不會在這裏削減它,因爲我們都知道只選擇解析郵件地址的'最佳'正則表達式本身可以是一個壯舉,也可能包含比實際頁面內容+標記更多的字符。
如果你需要,我反感正則表達式的另一個原因是,最終我不得不實現上面的try/catch驗證,因爲即使是「驗證過的」地址也可能導致構造函數失敗。
所以,只是重申:我可以激活/重用我的驗證碼從代碼隱藏嗎?
砸,謝謝。 – 2011-03-07 14:14:41