我的表单只有几个文本框,经过验证(服务器端和客户端)。在表单中我有按钮:“下一步”,“后退”,“取消”。所以我不需要验证启动然后用户点击“返回”或“取消”按钮。我怎样才能做到这一点? 提前谢谢!
一些样本:
<div class="buttons">
<input type="submit" name="cancelButton" value="" />
<input type="submit" name="backButton" value="" />
<input type="submit" name="nextButton" value="" />
</div>
<% using (Html.BeginForm()) { %>
<p>
<table style="width: 200px">
<tr><td align="center" colspan=2><%= Html.ValidationMessageFor(m => m.street) %><%= Html.DropDownListFor(m => m.street, Model.streetsList) %></td></tr>
<tr><td colspan=2> </td></tr>
<tr><td valign="bottom" align="right" style="width: 75px"><%= Html.LabelFor(m => m.flatNumber) %>:</td><td align=left><%= Html.TextBoxFor(m => m.flatNumber, new { maxlength = 6, style = "width: 48px;" })%> <%= Html.ValidationMessageFor(m => m.flatNumber) %></td></tr>
</table>
<br />
<input type="submit" class="refusal button red floatL" name="cancelButton" value="" />
<input type="submit" class="back button green floatL" name="backButton" value="" />
<input type="submit" class="continue button green floatR marR" name="nextButton" value="" />
</div>
<div class="clear">
</div>
<% } %>
在服务器端,我使用DataAnnotations属性进行验证。
答案 0 :(得分:3)
Button类具有CausesValidation属性 - 如果设置为false,则不会在回发时触发验证。
示例:
<asp:Button id="btnCancel" CausesValidation="false" onClick="bntCancel_Click" Text="Cancel" runat="server" />
请注意,这将禁用ASP.NET验证程序 - 如果您有自己的验证,则需要以其他方式禁用它。
答案 1 :(得分:2)
使用表单环绕文本框,然后转动,返回和取消提交按钮。在事件onsubmit上,指定一个方法,如果表单有效,则返回true,并且应该继续将其发送到服务器,否则为false。
所以我希望有以下几点:
<form id="navigatorForm">
<!-- Various text forms here -->
<input type="submit" value="Back" onsubmit="back()" />
<input type="submit" value="Next" onsubmit="next()" />
<input type="submit" value="Cancel" onsubmit="cancel()" />
<input type="hidden" id="operation" name="operation" value="" />
</form>
<script type="text/javascript">
function validate() {
// Perform validation here
// If okay, return true, else false
}
function next() {
document.getElementById('operation').value = 'next';
if(!validate()) {
alert('Form is not filed correctly. Please pay more attention!');
return false; // Do not send to server!
} else {
return true;
}
}
function back() {
document.getElementById('operation').value = 'back';
return true;
}
function cancel() {
document.getElementById('operation').value = 'cancel';
return true;
}
</script>
请注意,与next()不同,back()和cancel()无条件地返回true,这意味着请求在任何情况下都会发送到服务器。此时,在服务器端,您只需要检查操作是否接下来就知道您是否应该执行进一步的测试。