2013-09-24 26 views
0

這是我的Web表單。第一個名字是必需的,但是當我運行這個程序時,我將FirstName字段留空,我仍然得到感謝我填寫調查的頁面。它應該告訴我,名字是必需的。Visual Studio Web表單無法驗證

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Cheese.aspx.cs" Inherits="WebApplication1.Cheese" %> 

<!DOCTYPE html> 

<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title></title> 
</head> 
<body> 

    <form id="form2" runat="server"> 
    <div style="width: 37px"> 
     <asp:Panel ID="PanelNameForm" runat="server" Width="502px"> 
      <asp:Label ID="LabelFirstName" runat="server" Text="First Name"></asp:Label> 
      <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBoxFirstName"></asp:RequiredFieldValidator> 
      <asp:TextBox ID="TextBoxFirstName" runat="server"></asp:TextBox> 
      <asp:Label ID="LabelLastName" runat="server" Text="Last Name"></asp:Label> 
      <asp:TextBox ID="TextBoxLastName" runat="server"></asp:TextBox> <br /> 
      <asp:Label ID="LabelAddr1" runat="server" Text="Address"></asp:Label> 
      <asp:TextBox ID="TextBoxAddr1" runat="server"></asp:TextBox> 
      <asp:Label ID="LabelAddr2" runat="server" Text="Address"></asp:Label> 
      <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox> 
      <br /> 
      City<asp:TextBox ID="TextBoxAddr2" runat="server"></asp:TextBox> 
      State<asp:TextBox ID="TextBox2" runat="server"></asp:TextBox> 
      Zip<asp:TextBox ID="TextBox3" runat="server"></asp:TextBox> 
      <br /> 
      Phone Number<asp:TextBox ID="TextBox4" runat="server"></asp:TextBox> 
      email<asp:TextBox ID="TextBox5" runat="server"></asp:TextBox> 
      Age<asp:DropDownList ID="DropDownList2" runat="server"> 
       <asp:ListItem Value="1">0-17</asp:ListItem> 
       <asp:ListItem Value="2">18-21</asp:ListItem> 
       <asp:ListItem Value="3">22-25</asp:ListItem> 
       <asp:ListItem Value="4">26-35</asp:ListItem> 
       <asp:ListItem Value="5">36+</asp:ListItem> 
      </asp:DropDownList> 
      <asp:Panel ID="Panel1" runat="server" Width="407px"> 
       Gender<asp:RadioButtonList ID="RadioButtonList1" runat="server"> 
        <asp:ListItem Value="Male">Male</asp:ListItem> 
        <asp:ListItem Value="Female">Female</asp:ListItem> 
       </asp:RadioButtonList> 
       Favorite Cheese<asp:TextBox ID="TextBox6" runat="server"></asp:TextBox> 
       <br /> 
       How often do you eat cheese? (Check one)<asp:CheckBoxList ID="CheckBoxList1" runat="server"> 
        <asp:ListItem>Every Day</asp:ListItem> 
        <asp:ListItem>Every Other Day</asp:ListItem> 
        <asp:ListItem>Once A Week</asp:ListItem> 
        <asp:ListItem>I Don&#39;t Like Cheese</asp:ListItem> 
       </asp:CheckBoxList> 
       Cheese Texture Preferences (Check All That Apply)<asp:CheckBoxList ID="CheckBoxList2" runat="server"> 
        <asp:ListItem Value="1">Hard</asp:ListItem> 
        <asp:ListItem Value="2">Semi-hard</asp:ListItem> 
        <asp:ListItem Value="3">Semi-soft</asp:ListItem> 
        <asp:ListItem Value="4">Soft</asp:ListItem> 
        <asp:ListItem Value="5">Crumbly</asp:ListItem> 
       </asp:CheckBoxList> 
       Milk Type Preferences (Check All That Apply)<asp:CheckBoxList ID="CheckBoxList3" runat="server"> 
        <asp:ListItem>Buffalo</asp:ListItem> 
        <asp:ListItem>Cow</asp:ListItem> 
        <asp:ListItem>Goat</asp:ListItem> 
        <asp:ListItem>Vegetarian</asp:ListItem> 
       </asp:CheckBoxList> 
        <asp:Button ID="Button" runat="server" Text="Submit" OnClick="Button_Click" /> 
       </asp:Panel> 
     </asp:Panel> 
     <asp:Panel ID="PanelThankYou" runat="server" Width="442px"> 
      Thank you for taking the survey, <asp:Label ID="LabelThankYouName" runat="server" Text=""></asp:Label> 
     </asp:Panel> 
    </div> 
    </form> 
</body> 
</html> 

下面是提交按鈕的代碼:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.UI; 
using System.Web.UI.WebControls; 

namespace WebApplication1 
{ 
    public partial class Cheese : System.Web.UI.Page 
    { 
     protected void Page_Load(object sender, EventArgs e) 
     { 
      if (!(Page.IsPostBack)) 
      { 
       //first time page is loaded 
       PanelThankYou.Visible = false; 
      } 
      else 
      { 

      } 
     } 

     protected void Button_Click(object sender, EventArgs e) 
     { 
      PanelNameForm.Visible = false; 
      PanelThankYou.Visible = true; 

      LabelThankYouName.Text = TextBoxFirstName.Text + " " + TextBoxLastName.Text + "!"; 
     } 
    } 
} 

回答

0

如果你想客戶端validatation(JavaScript)的設置EnableClientScript爲true:

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBoxFirstName" EnableClientScript="true"></asp:RequiredFieldValidator> 

如果您想驗證在服務器上,在代碼隱藏中使用Page.IsValid特權:

if(Page.IsValid) 
{ 
... 
} 

您也可以使用的ValidationSummary(< ASP:的ValidationSummary>標籤)來驗證控件

+0

謝謝!那麼我應該將我的代碼更改爲這樣嗎? protected void Button_Click(object sender,EventArgs e) if(Page.IsValid) { PanelNameForm.Visible = false; PanelThankYou.Visible = true; LabelThankYouName.Text = TextBoxFirstName.Text +「」+ TextBoxLastName.Text +「!」; } } – Grafica

+0

我加了EnableClientScript =「true」,然後運行它。它仍然讓我留下FirstName空白。 – Grafica

0

只需添加ValidationGroup屬性來的RequiredFieldValidator,並在其上回發數據的按鈕。它將防止文本框上的空白值。

<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" ErrorMessage="RequiredFieldValidator" ControlToValidate="TextBoxFirstName" ValidationGroup="v"></asp:RequiredFieldValidator> 

..... // other code 

<asp:Button ID="Button" runat="server" Text="Submit" OnClick="Button_Click" ValidationGroup="v" /> 

願這對你的工作:d

+0

不,那沒用。不管怎麼說,還是要謝謝你。 – Grafica

+0

我檢查了你的代碼。 PLZ在你的代碼中替換<!DOCTYPE html PUBLIC「 - // W3C // DTD XHTML 1.0 Transitional // EN」「http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd」 >' –

+0

我們現在使用HTML5,而不是回到XHTML。 – Grafica

0

下面是我如何做HTML5(你說你使用)必填字段驗證一個快速演示。

演示代碼隱藏頁(.aspx.cs):

using System; 
using System.Web.UI.WebControls; 

public partial class PgValidationDemo : System.Web.UI.Page 
{ 
    // bind page init 
    // in the page constructor 
    public PgValidationDemo() 
    { 
     this.Init += PgValidationDemo_Init; 
    } 

    // Bind our submit button click event 
    private void PgValidationDemo_Init(object sender, EventArgs e) 
    { 
     cmdSubmit.Click += cmdSubmit_Click; 
    } 

    // handle the submit button 
    // click event 
    private void cmdSubmit_Click(object sender, EventArgs e) 
    { 
     // Tell the form to validate 
     // fields in validation group 
     // 'ValidationDemo' 
     String vGroup = "ValidationDemo"; 
     vSummary.ValidationGroup = vGroup; 
     Page.Validate(vGroup); 

     // Call our fantastic convenience method 
     // to check if a textbox has a value in it 
     this.addRequiredFieldValidator(txtFirstName, vGroup, "FirstName is Required."); 

     // If Page.IsValid 
     // redirect to the 'thanks page' 
     // if it isnt valid we don't need to 
     // provide additional code because 
     // the error messages will show in the 
     // validation summary 
     if (Page.IsValid) 
     { 
      //Redirect to Thanks for filling out survey 
     } 
    } 

    // convenience method to add required 
    // text validators to the form collection 
    private void addRequiredFieldValidator(TextBox txt, String validationGroup, String errorMessage) 
    { 
     Page.Validators.Add(new CustomValidator() 
     { 
      IsValid = !String.IsNullOrWhiteSpace(txt.Text), 
      ErrorMessage = errorMessage, 
      ValidationGroup = validationGroup 
     }); 
    } 
} 

演示頁(的.aspx)

<%@ Page Language="C#" AutoEventWireup="false" CodeFile="default.aspx.cs" Inherits="PgValidationDemo" %> 
<!DOCTYPE html> 
<html xmlns="http://www.w3.org/1999/xhtml"> 
<head runat="server"> 
    <title>Validation Demo</title> 
</head> 
<body> 
    <form id="aspnetForm" runat="server"> 
    <asp:ValidationSummary runat="server" ID="vSummary" /> 

    <label> 
     FirstName: 
     <asp:TextBox runat="server" ID="txtFirstName" required="required" /> 
     <!-- 
      required="required" is an html5 form attribute that prevents 
      folks from submitting forms with blank values in textboxes. 
      great stuff! 
     --> 
    </label> 
    <div> 
     <asp:Button runat="server" id="cmdSubmit" Text="Submit" /> 
    </div> 
    </form> 
</body> 
</html> 
+0

我有這個在我的Button_Click方法,但它仍然需要我感謝頁面,即使我離開這個名字的空白: 保護無效Button_Click(對象發件人,EventArgs的) { 如果(Page.IsValid) { PanelNameForm.Visible = false; PanelThankYou.Visible = true; LabelThankYouName.Text = TextBoxFirstName.Text +「」+ TextBoxLastName.Text +「!」; } } – Grafica