我有这两个按钮:
<button id="submit" name="button" value="register" class="btn btn-primary">Submit</button>
<button id="cancel" name="button" value="cancel" class="btn btn-secondary">Cancel</button>
在一个页面中有一些文本字段,例如
@Html.TextBoxFor(m => m.EmailRequest, new { @class = "form-control", type = "email" })
@Html.ValidationMessageFor(m => m.EmailRequest)
然后要知道取消按钮是否被阻止将它们重定向到其他页面,在控制器中我有这样的:
[HttpPost]
public ActionResult ForgotPassword(string button, ForgotPasswordViewModel fpModel)
{
// cancel button, go back to LoginPage
if (!string.IsNullOrEmpty(button) && button == "cancel")
{
return RedirectToAction("Login");
}
else
{
// blah
}
}
如果他们在文本框中填写好的有效值,然后点击取消但,当文本框上出现验证错误,然后单击取消时,它甚至不会被调用。所以它也不会重定向它们。
那我该怎么办?
答案 0 :(得分:2)
听起来好像你试图在两种情况下将表单发回服务器(取消或提交)。
如果存在验证问题,将表单发回服务器没有多大意义。如果执行此操作,则依赖于服务器端验证检查并确保重新路由到Login。你应该总是有服务器端,但显然最好不要只依赖它并同时进行服务器端和客户端验证。
另一种解决方案是用链接替换取消按钮。 E.g。
@Html.ActionLink("Cancel", "Login")
这在性能方面也更快,因为它只是将用户重定向到登录页面。而不是回发到服务器,然后重新路由。