在我的數據庫我有像貨幣代碼表:如何驗證文本框只能在asp.net c#中輸入幾個選項?
USD
GBP
CAD
AUD
JPY
EUR
ISK
PLZ
TRL ... and more
在我的asp.net應用程序,我對用戶輸入的貨幣文本框。
<asp:TextBox ID="txtCurrency" runat="server" Text="USD"></asp:TextBox>
如何強制用戶只輸入我在我的數據庫中的選項?
在我的數據庫我有像貨幣代碼表:如何驗證文本框只能在asp.net c#中輸入幾個選項?
USD
GBP
CAD
AUD
JPY
EUR
ISK
PLZ
TRL ... and more
在我的asp.net應用程序,我對用戶輸入的貨幣文本框。
<asp:TextBox ID="txtCurrency" runat="server" Text="USD"></asp:TextBox>
如何強制用戶只輸入我在我的數據庫中的選項?
如果你必須你可以使用正則表達式驗證控件:
<asp:RegularExpressionValidator id="RegularExpressionValidator1"
ControlToValidate="txtCurrency"
ValidationExpression="^(USD|GBP|CAD|AUD|JPY|EUR|ISK|PLZ)$"
Display="Static"
EnableClientScript="false"
ErrorMessage="Enter a valid code"
runat="server"/>
這將填充服務器端這樣的,但格式類似上面的正則表達式:
RegularExpressionValidator1.ValidationExpression = GetValuesFromDb();
這是你如何將值格式化爲正則表達式:
var cs = new List<string> {"USD", "GBP", "CAD", "AUD", "JPY", "EUR", "ISK", "PLZ"};
var csRegex = "^({0})$";
Console.Out.Write(string.Format(csRegex, string.Join("|", cs)));
但是從UI體驗來看,我認爲像其他人所建議的下拉或UI自動完成更適合。
您可以輕鬆實現Autocomplete box。
這裏是一個漫遊: Creating a Simple Auto-Complete TextBox
<asp:ToolkitScriptManager ID="ToolkitScriptManager1" runat="server">
</asp:ToolkitScriptManager>
<asp:TextBox ID="txtCurrency" runat="server"></asp:TextBox>
<asp:AutoCompleteExtender
ID="AutoCompleteExtender1"
TargetControlID="txtCurrency"
runat="server" />
並創建AutoCompleteExtender一個頁面方法(在漫遊描述)。
如果您想在客戶端進行設置,您也可以使用Jquery autocomplete,但是如果您想從數據庫中檢索數據,則必須創建一個web服務方法或處理程序來爲json數據提供自動填充。
我認爲這比用戶對自由文本文本框的簡單驗證更友好。 最後,您可以使用正則表達式進行驗證(在客戶端和服務器端)。 你可以用HTML5驗證去也可以通過正則表達式:HTML5 validation
或只使用內置在asp.net驗證,它會自動處理客戶端和服務器端驗證。 ASP.Net Validators
那麼,你可以做的是使用自動完成選項,一旦你有了貨幣類型,你就可以有選擇地使用與被輸入貨幣不匹配的按鍵。
像例如,如果用戶鍵入U
,並試圖輸入類似M
(假設沒有貨幣與UM
開始),然後按鍵M
可以消費,也只有這樣,如果用戶試圖鍵入S
如果它允許(因爲在數據庫中有一些叫做「USD」的東西)。
第二個選擇是像select2
也許用下拉列表來代替? – Andrei
或自動填充框 – speti43
它可能對於下拉菜單太大而用戶想要在文本框中輸入... – Bryuk