0

我制作了一个包含多页字段的 ASP.NET 表单向导。其中一些字段是必需的,有些是可选的。默认情况下,向导似乎使每个字段都成为必需的。如何将它们更改为可选? 表单向导

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

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

一些帮助将不胜感激!

4

2 回答 2

1
  1. 字段的HTML5 属性requiredinput客户端(浏览器)上进行验证。并非所有浏览器都这样做。如果您不希望它被要求,请不要包含该属性(将其保留,不要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渲染

  3. 您可以使用 ASP.Net Validation Controls 来验证服务器上的 HTML 服务器和 ASP.net 控件(也称为服务器端验证),这是您应该执行的操作以正确验证您的输入。

    无论浏览器是否支持 HTML5required属性,服务器端验证都将起作用:

    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 - 它确实验证了它)。

嗯...

于 2012-06-04T03:20:17.150 回答
0

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

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,该按钮将不会触发验证。

于 2012-06-03T20:03:17.737 回答