ASP.NET表单向导可选字段?

时间:2012-06-03 18:52:01

标签: asp.net visual-studio-2010 formwizard

我创建了一个包含多个字段页面的ASP.NET表单向导。 其中一些字段是必需的,一些字段是可选的。默认情况下,向导似乎需要每个字段。如何将它们更改为可选? Form Wizard

我认为required=false中的<input runat="server" ID="txtDriverLicenseNumber" type="text" required="false" size="24"></input>会产生预期效果,但似乎什么也没做。

此外,即使我没有填写当前页面上的字段,我希望表格允许我点击“上一页”。

非常感谢一些帮助!

2 个答案:

答案 0 :(得分:1)

  1. required字段的HTML5属性input在客户端(浏览器)上得到验证。并非所有浏览器都能。如果您不希望重新获得该属性,请不要包含该属性(请将其保留,不要required="false"

    此输入是必需的:

    <input required name=... /> 
    

    此输入不是必需的:

    <input name=... /> 
    
  2. 您可以使用HTML服务器控件或ASP.Net控件中的属性为支持它的浏览器添加客户端验证:

    在HTML服务器控件上使用:

    <input id="input1" name="input1" type="text" required runat="server" />
    

    在ASP.net控件上使用:

    <asp:TextBox runat="server" ID="tbox1" required />
    

    这是Firefox(v12)如何呈现required属性的验证(您的屏幕截图是Chrome?):

    firefox rendering of required input attribute

  3. 您可以使用ASP.Net验证控件来验证服务器上的HTML服务器和ASP.net控件(又名服务器端验证),这是您应该做的正确验证您的输入。

    无论浏览器是否支持HTML5 required属性,服务器端验证都将有效:

    ASP.Net HTML服务器控件的

    服务器端验证(必需):

    <input id="input1" name="input1" type="text" required runat="server" />
    
    <asp:RequiredFieldValidator ID="rf1" runat="server" 
    Text="input required" ControlToValidate="input1" ForeColor="Red" />
    
    ASP.Net控件的

    服务器端验证(必需):

    <asp:TextBox runat="server" ID="tbox1" required />
    
    <asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" 
    Text="textbox required" ControlToValidate="tbox1" ForeColor="Red" />
    
  4. 验证将通过ASP.Net向导控制您的进度 - 必须提供必填字段(仅限)才能转到“下一步”(并返回)。这就是它应该如何运作。

    我认为您遇到了困难,因为您错误地设置了所有字段(因为您设置了required="false"属性而不是省略 您正在使用Chrome - 它会对其进行验证。)

  5. ... H个

答案 1 :(得分:0)

您使用的是HTML输入标记属性,它不是ASP.NET服务器控件属性。如果存在必需属性,则无论其值如何,都需要字段。请注意,仅在HTML 5中支持Required属性。

http://www.w3schools.com/html5/att_input_required.asp

ASP.NET向导控件不需要字段,ASP.NET使用验证控件,最好使用它。使用验证器,您必须使用ASP.NET服务器控件(TextBox,CheckBox等),请参见此处:

http://msdn.microsoft.com/en-us/library/debza5t0.aspx

如果使用ASP.NET验证器,则只需将CausesValidation按钮属性设置为false,该按钮不会触发验证。