我创建了一个包含多个字段页面的ASP.NET表单向导。 其中一些字段是必需的,一些字段是可选的。默认情况下,向导似乎需要每个字段。如何将它们更改为可选?
我认为required=false
中的<input runat="server" ID="txtDriverLicenseNumber" type="text" required="false" size="24"></input>
会产生预期效果,但似乎什么也没做。
此外,即使我没有填写当前页面上的字段,我希望表格允许我点击“上一页”。
非常感谢一些帮助!
答案 0 :(得分:1)
required
字段的HTML5属性input
在客户端(浏览器)上得到验证。并非所有浏览器都能。如果您不希望重新获得该属性,请不要包含该属性(请将其保留,不要说required="false"
)
此输入是必需的:
<input required name=... />
此输入不是必需的:
<input name=... />
您可以使用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?):
您可以使用ASP.Net验证控件来验证服务器上的HTML服务器和ASP.net控件(又名服务器端验证),这是您应该做的正确验证您的输入。
无论浏览器是否支持HTML5 required
属性,服务器端验证都将有效:
服务器端验证(必需):
<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" />
验证将通过ASP.Net向导控制您的进度 - 必须提供必填字段(仅限)才能转到“下一步”(并返回)。这就是它应该如何运作。
我认为您遇到了困难,因为您错误地设置了所有字段(因为您设置了required="false"
属性而不是省略 和您正在使用Chrome - 它会对其进行验证。)
... 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,该按钮不会触发验证。