代码之家  ›  专栏  ›  技术社区  ›  Jeff

通过程序停止导航

  •  0
  • Jeff  · 技术社区  · 17 年前

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

    情境:用户点击了一个链接并触发了_Click()事件。

    点击事件会触发一个保存方法,该方法会验证一些信息。如果任何信息不符合预期,我们希望停止点击事件的其余部分。

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

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

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

    没有可用于指定“停止导航”的返回值。..那么,我如何启动该方法,设置“错误”标签,然后阻止调用返回堆栈(并将用户从页面上发送出去)呢?

    2 回复  |  直到 17 年前
        1
  •  1
  •   baretta    17 年前

    不过,您可以使用CustomValidator,并处理ServerValidate事件以执行此自定义验证吗?

    可以通过调用Response来结束HTTP请求。End(); 听起来,如果页面无效,您应该能够阻止执行重定向操作。

        2
  •  1
  •   Dead account    17 年前

    回应。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";
    }
    
    推荐文章