在.NET(特别是C#)中,如何停止导航?
情况:用户点击了链接并解除了_Click()事件。
click事件会触发一个save方法,该方法会验证某些信息。如果任何信息不符合要求,我们希望停止发生其余的点击事件。
ASP.NET的内置验证在此实例中不起作用。根据数据的初始状态,表单可能需要填写多种不同的方式(表单由几个不同的控件构建,每个控件在多个页面中使用)。例如,如果他们第一次点击这个表格(并且他们从未添加过它之前包含的任何信息),则需要NOTHING ......但如果他们填写任何内容,他们必须填写(几乎)所有内容。 / p>
在验证中使用这么多条件逻辑,只需在页面上粘贴(空)标签并在需要时填充验证消息就比使用实际验证器更容易。
我们的问题是,触发Save()的方法会将用户移动到另一个页面。
我们可以使用指定'停止导航'的返回值...所以如何触发方法,设置'错误'标签,然后阻止调用返回堆栈(并发送用户远离页面)?
答案 0 :(得分:1)
到Response.End();
听起来你有一些意大利面条的逻辑。您希望将验证分解为一个方法,如果它返回false,则停止处理Save等。
我希望您的代码看起来像;
if (Validation())
{
if (DoSaveFunction())
{
Response.Redirect("theNextPage.aspx");
}
else
{
lblWarning.Text = "Something went wrong saving the file";
}
}
else
{
lblWarning.Text = "Invalid inputs";
}
答案 1 :(得分:1)
您可以使用CustomValidator,并处理ServerValidate事件以执行此自定义验证吗?
可以通过调用Response.End()来结束HTTP请求; 另外,如果页面无效,您应该能够阻止重定向操作的执行。