Page.IsValid borde vara svaret på din fråga.
Kan på ett smidigt sätt kontrollera om ett formulär är validerat, och får true eller false beroende på om det klarade sig igenom alla validationer eller inte?
Mvh, Vide
5 svar · 262 visningar · startad av Vide
Kan på ett smidigt sätt kontrollera om ett formulär är validerat, och får true eller false beroende på om det klarade sig igenom alla validationer eller inte?
Mvh, Vide
Page.IsValid borde vara svaret på din fråga.
Där var du snabb. :D
Hmm... men då måste något annat vara fel.
Jag har två textfält, båda har en RequiredFieldValidator:
<asp:TextBox ID="gb_name" MaxLength="20" Runat="server" />
<asp:RequiredFieldValidator ErrorMessage="Du måste ange ett namn!"
Runat="server"
ID="gb_name_rfv"
ControlToValidate="gb_name"
EnableClientScript="True" />
<br>
<br>
<b>Text:</b>
<br>
<asp:TextBox ID="gb_body" MaxLength="2500" Runat="server" Columns="45" Rows="4" TextMode="MultiLine" />
<asp:RequiredFieldValidator ErrorMessage="Skriv din text i det stora fältet!"
Runat="server"
ID="gb_body_rfv"
ControlToValidate="gb_body" />
<br>
<asp:Button ID="gb_b1" Runat="server" Text="Skapa inlägg" CssClass="button" CausesValidation="True" OnClick="Create_GBMessage" />
Submitknappen anropar vid OnClick Create_GBMessage.
Create_GBMessage:
public void Create_GBMessage(object sender, System.EventArgs e)
{
if (Page.IsValid)
{
string strName = Request.Form[ "gb_name" ];
string strBody = Request.Form[ "gb_body" ];
string strHUA = Request.ServerVariables[ "HTTP_USER_AGENT" ];
string strRA = Request.ServerVariables[ "REMOTE_ADDR" ];
string strSQL = "insert into guestbook(name, body, HTTP_USER_AGENT, REMOTE_ADDR) " +
" values('"+strName+"', '"+strBody+"', '"+strHUA+"', '"+strRA+"')";
database db = new database();
db.addDbData( strSQL );
}
}
Oavsett om jag använder Page.IsValid eller RequiredFieldValidators så slinker den igenom och lägger till i databasen.
Ser inte något fel det borde fungera. En annan sak jag la märke till var att du anvnder Request.Form i stället för gb_name.Text?
renholm skrev:
Ser inte något fel det borde fungera. En annan sak jag la märke till var att du anvnder Request.Form i stället för gb_name.Text?
Gammal vana såklart, skall genast byta. ;)
Måste ju vara ett logik fel någonstans. *kollar förvirrat i koden*
Nu funkar det, hade bara glömt att lägga till Page.IsPostBack i if-satsen. ;)