RegulalExpressionValidator asp.net-ben?

RegulalExpressionValidator asp.net-ben?
2008-01-24T13:54:26+01:00
2008-01-24T21:16:38+01:00
2022-11-07T10:15:39+01:00
H.Tibcsi
Hello. Azt szeretném : Van egy Label1; TextBox1; Button1 vezérlőm. Példaképp azt szeretném: ha a TextBox1-be nem csupa nagybetüt írnak, (és megnyomják a Button1-et): a Label1.Text legyen "Nem csak nagybetüt használt!"

A kódom jelenleg így néz: (tutti nem jó )
RegularExpressionValidator ereg=new RegularExpressionValidator();
ereg.ControlToValidate=this.TextBox1.Text;
ereg.ValidationExpression="\b[A-Z]\b";
ereg.Text="OK";
ereg.ErrorMessage="Nem csak nagybetüt használt!
this.Label1.Text=ereg.text;

(A googlét már próbáltam, de nem segített)
Mutasd a teljes hozzászólást!
A kódod több sebből is vérzik:

1. A validator control kliens oldalon validál, javascriptből - megakadályozva ezzel az oldal post-olását. Tehát szerver oldalon, a létrehozás pillanatában soha nem fogja felvenni a hibaüzenetet.
2. ControlToValidate tulajdonság Control típust vár és nem String-et
3. A ValidationExpression nem működik jól (legalább is mikor kipróbáltam nálam nem azt tette amit te szeretnél - VS 2005-ben)

Tehát: Tedd fel a controlt design nézetben a formodra, állítsd be megfelelően a tulajdonságait és valami olyasmit kapsz, mint amit jsystem írt. És a Button1 nem fogja tudni addig Post-olni az oldalt, ameddig nem megfelelő a kifejezés.



A másik lehetőség, ha nem Validator-t használsz, hanem a Post után egy Regex példány segítségével ellenőrizd a TextBox1.Text-et (IsMatch method) és ennek megfelelően állítod Label1.Text-et.
Mutasd a teljes hozzászólást!

  • Miért kell ezt bonyolítani?
    Miért kell Label1? Nem elég a validator? Miért kell futás időben létrehozni, mikor design-ban is fel lehet dobni?
    Mutasd a teljes hozzászólást!
  • Nem tudod miért nem jó a kódom ? Ha tudod légyszi javítsd ki (és a Label1-es verzióra)

    Ha van egy saját verziod és fut is- azt is megírhatnád.
    Mutasd a teljes hozzászólást!
  • ha mindenáron bonyiltítani akarod ez életed (és nem hallgatsz stl kollégára)

    akkor a kódod tedd ide:

    protected override void CreateChildControls() { RegularExpressionValidator ereg=new RegularExpressionValidator(); ereg.ControlToValidate=this.TextBox1.Text; ereg.ValidationExpression="\b[A-Z]\b"; ereg.Text="OK"; ereg.ErrorMessage="Nem csak nagybetüt használt! this.Label1.Text=ereg.text; this.Controls.Add(ereg); }

    és akkor minden Page_Load-nál újraépül a regExValidátorod. (Mert amugy nem fog)

    De ugyanezeket dizájnerben is meg tudnád tenni, no mind1.

    amugy meg a guggli is dobálja : pl itt is meg itt is hogy hogy is lehet ezt 1szerübben.
    Mutasd a teljes hozzászólást!
  • A(z) "" vezérlő ControlToValidate tulajdonsága nem lehet üres

    Nekem ezt a hibaüzenetet írja ki a kódodra
    Mutasd a teljes hozzászólást!
  • másoltam a kódod és nem néztem:

    ereg.ControlToValidate=this.TextBox1.Text; a .ID; kell a Text helyett.
    Mutasd a teljes hozzászólást!
  • .ID -vel meg ezt írja ki:

    A(z) "RegularExpressionValidator" típusú "_ctl0" vezérlőt olyan űrlapcímkében kell elhelyezni, amely runat=server attribútummal rendelkezik.

    pedig a form -ban runat=server be van írva. Kajakra nem értem.
    Mutasd a teljes hozzászólást!
  • Fejből irom,
    akkor .ClientID :)

    de nem értem amugy h ezzel mi a bajod, nem kell ennyit dolgozni hozzá:
    az aspx/ascx kódba bele:
    <asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server" ControlToValidate="TextBox1" ValidationExpression="\b[A-Z]\b" Display="Static" Font-Names="verdana" Font-Size="10pt"> Nem csak nagybetüt használt! </asp:RegularExpressionValidator>
    Mutasd a teljes hozzászólást!
  • A kódod több sebből is vérzik:

    1. A validator control kliens oldalon validál, javascriptből - megakadályozva ezzel az oldal post-olását. Tehát szerver oldalon, a létrehozás pillanatában soha nem fogja felvenni a hibaüzenetet.
    2. ControlToValidate tulajdonság Control típust vár és nem String-et
    3. A ValidationExpression nem működik jól (legalább is mikor kipróbáltam nálam nem azt tette amit te szeretnél - VS 2005-ben)

    Tehát: Tedd fel a controlt design nézetben a formodra, állítsd be megfelelően a tulajdonságait és valami olyasmit kapsz, mint amit jsystem írt. És a Button1 nem fogja tudni addig Post-olni az oldalt, ameddig nem megfelelő a kifejezés.



    A másik lehetőség, ha nem Validator-t használsz, hanem a Post után egy Regex példány segítségével ellenőrizd a TextBox1.Text-et (IsMatch method) és ennek megfelelően állítod Label1.Text-et.
    Mutasd a teljes hozzászólást!
  • köszi. Tudtam hogy rossz a kódom. De post után , a server oldalon akarok regulárt vizsgálgatni. Kipróbáltam ezt a kliensoldalit <asp:RegularExpressionValidator id="RegularExpressionValidator1" runat="server"
    ControlToValidate="TextBox1"
    ValidationExpression="\b[A-Z]\b"
    Display="Static"
    Font-Names="verdana"
    Font-Size="10pt">
    Nem csak nagybetüt használt!
    </asp:RegularExpressionValidator>
    Ez hibátlanul megy csak a feliratot nem oda teszi ahová kell (és hanyagolni szeretném a jscriptet)

    A regex-es dolog szimpibb nekem. de a googlén nem tudok rajta eligazodni, sajnos. Ott túl bonyolult. De kössz.
    Mutasd a teljes hozzászólást!
  • csak a feliratot nem oda teszi ahová kell


    A validátort rakd a Label1 helyére és akkor oda teszi.

    és hanyagolni szeretném a jscriptet

    Akkor felejtsd el az ASP.NET-et. Megnézted már egyszer is milyen kimenetet generál? Tele van az egész oldal javascripttel (még a Post is azon keresztül megy).
    Mutasd a teljes hozzászólást!
  • Arra közbe rájöttem hogy a Label1 poziciojára kell rakni a validator. :)

    De azt nem tudtam hogy a .net ennyire összefügg a jscriptel.
    A post dologról pl úgy tudtam csak akkor küldi jscriptel ha az autopostback true ra van rakva.
    Mutasd a teljes hozzászólást!
Tetszett amit olvastál? Szeretnél a jövőben is értesülni a hasonló érdekességekről?
abcd