2015-03-05 15 views
5

Ich möchte der Benutzer eine gültige Auswahl in einer DropDownList machen, aber ich möchte keine Auswahl als Standard, so dass der Standardwert Wert -- Select -- ist. Ich verwende eine RegularExpressionValidator, um nur ausgewählte Werte zu akzeptieren, die ein Literalkomma enthalten (da die gültigen Elemente LastName, FirstName formatiert sind).Wie validiere ich einen ausgewählten Wert in einer DropDownList?

Allerdings bin ich perplex darüber, wie der Validator nach dem ausgewählten Wert suchen soll! Ich würde es lieber NICHT zu einer Validierung auf Server-Ebene machen, und wenn es möglich ist, möchte ich es so einfach wie einen Regex-Validator behalten.

Hier ist der Code:

<asp:DropDownList ID="ddNames" runat="server"> 
</asp:DropDownList> 
&nbsp; 
<asp:RegularExpressionValidator ID="RegexValidator" runat="server" 
    ControlToValidate="ddNames" ValidationExpression=".*\,.*" 
    ErrorMessage="Select a Valid User"> 
</asp:RegularExpressionValidator> 

Die Drop-Down-Werte sind:

-- Select -- 
Smith, John B 
Jones, Bill 
Wilkinson, Harmony 
Hull, Cordell 
Hill, Faith 

Gibt es eine Möglichkeit, den Validator am SelectedValue zu zielen? Wie gezeigt, scheint der Validator keinen der Werte im Steuerelement zu sehen.

+0

Können Sie den Validator aufrufen, wenn das Formular gesendet wird? – sln

+0

haben Sie versucht mit '' – MethodMan

+0

Oder vielleicht, wenn der Benutzer übermittelt es (über die Schaltfläche?) Sie können ausgewähltes Element, dann legen Sie das ausgewählte Element. Für Steuerelemente löst das normalerweise Ereignisse aus. – sln

Antwort

3

Bin ich richtig, dass Sie den Benutzer zwingen möchten, eine Auswahl zu treffen, und diese Auswahl sollte in Ihre regex passen?
Wenn ja, können Sie die RequiredFiledValidator Klasse Ihre dropdown Steuerung leicht hinzufügen, bieten die InitialValue Eigenschaft, um es gleich zu Ihrem -- Select -- Wert Artikel so wird der Benutzer etwas nicht gleich die -- Select -- auszuwählen gezwungen werden, und dieser Wert wird über validiert werden RegularExpressionValidator Kontrolle.

Von MSDN:

Validierung schlägt fehl, wenn der Wert der zugehörigen Eingangssteuer Spiele dieser InitialValue auf Fokus zu verlieren. Die Zeichenfolgen in der InitialValue-Eigenschaft und dem Eingabesteuerelement werden abgeschnitten, um vor und nach der Zeichenfolge zusätzliche Leerzeichen zu entfernen, bevor die Überprüfung durchgeführt wird.

Die Validierung ist erfolgreich, wenn das Eingabesteuerelement leer ist. Wenn für die zugehörige Eingabesteuerung ein Wert erforderlich ist, verwenden Sie zusätzlich zur RegularExpressionValidator Steuerung eine RequiredFieldValidator Steuerung.

Auch sollten Sie für eine RegularExpressionValidator Klasse beachten Sie, dass

Beide serverseitigen und clientseitige Validierung ausgeführt werden, es sei denn, der Browser clientseitige Validierung oder clientseitige Validierung nicht unterstützt wird explizit deaktiviert (indem die Eigenschaft EnableClientScript auf false gesetzt wird).

So sollten Sie Ihren Code so etwas wie dieses:

<asp:DropDownList ID="ddNames" runat="server"> 
</asp:DropDownList> 
&nbsp; 
<asp:RegularExpressionValidator ID="RegexValidator" runat="server" 
    ControlToValidate="ddNames" ValidationExpression=".*\,.*" 
    ErrorMessage="Select a Valid User" /> 
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
    ErrorMessage="*" ControlToValidate="ddNames" 
InitialValue="-- Select --" /> 
+0

Soweit ich das beurteilen kann, scheint der Regex-Validator nicht zu funktionieren, um den SelectedValue eines DropDownList-Controls zu validieren. Meine Frage soll einen möglichen Weg aus dem Weg räumen, wenn es existiert. Ich hätte erwartet, dass eine solche Antwort bereits erschienen ist, falls eine existiert. Danke für deine durchdachte Antwort. – Cyberherbalist

2

Sie RequiredFieldValidator verwenden können.

 <asp:DropDownList ID="ddNames" runat="server"> 
     </asp:DropDownList> 

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
ErrorMessage="Please select" ControlToValidate="ddNames" 
InitialValue="-- Select --"></asp:RequiredFieldValidator> 
+0

Das funktioniert, und so habe ich es letztendlich gewählt. Ich würde immer noch gerne wissen, wie man einen RegularExpressionValidator benutzt, um den Job zu erledigen, aber, oh, nun. – Cyberherbalist

+0

RegularExpressionValidator wird verwendet, um einige Muster zu validieren. –

+0

Ja, das weiß ich. Meine Frage sollte dies deutlich machen. Der RegularExpressionValidator scheint jedoch nicht mit dem ausgewählten Wert der DropDownList zu vergleichen. Meine Frage soll sehen, ob jemand einen Weg gefunden hat, einen Regex-Validator dazu zu bringen, diesen ausgewählten Wert zu validieren. – Cyberherbalist

Verwandte Themen