以编程方式停止导航

时间:2009-01-21 16:25:04

标签: c# asp.net

在.NET(特别是C#)中,如何停止导航?

情况:用户点击了链接并解除了_Click()事件。

click事件会触发一个save方法,该方法会验证某些信息。如果任何信息不符合要求,我们希望停止发生其余的点击事件。

ASP.NET的内置验证在此实例中不起作用。根据数据的初始状态,表单可能需要填写多种不同的方式(表单由几个不同的控件构建,每个控件在多个页面中使用)。例如,如果他们第一次点击这个表格(并且他们从未添加过它之前包含的任何信息),则需要NOTHING ......但如果他们填写任何内容,他们必须填写(几乎)所有内容。 / p>

在验证中使用这么多条件逻辑,只需在页面上粘贴(空)标签并在需要时填充验证消息就比使用实际验证器更容易。

我们的问题是,触发Save()的方法会将用户移动到另一个页面。

我们可以使用指定'停止导航'的返回值...所以如何触发方法,设置'错误'标签,然后阻止调用返回堆栈(并发送用户远离页面)?

2 个答案:

答案 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请求; 另外,如果页面无效,您应该能够阻止重定向操作的执行。