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

标准的asp.net验证程序是否与ajax和更新面板一起工作?

  •  1
  • Abdu  · 技术社区  · 16 年前

    当从代码后面使用page.validate()时,验证器没有触发(没有显示预期的错误消息)有问题。验证器放置在ajax更新面板中。

    似乎有可下载的ajax版本的验证器。我不确定我是否需要这些,或者VS2008SP1是否已经有了它们。当表单通过按钮发布时,验证器工作,但当我按需执行page.validate()时,验证器不工作。

    6 回复  |  直到 16 年前
        1
  •  1
  •   Community CDub    7 年前

    是的,验证器在updatepanel中工作,但您至少需要使用asp.net 2.0的sp1。如果使用sp1,则不需要也不应该使用验证程序的“ajax版本”。

    有关此主题的详细信息,请访问:

    StackOverflow: ASP.NET Validators inside an UpdatePanel

        2
  •  1
  •   Abdu    16 年前

    我不想强制更新。在某些情况下,当用户更改某个表单元素的值时,我想验证某些表单元素。当用户更改为单选按钮或下拉列表时,会发生自动回发。当回发发生时,我希望验证控件像按下提交按钮一样启动。

    这些导致回发的控件已启用“原因还原”。另一个测试是在导致回发的控件的事件处理程序中,我有一个page.validate()。

    问题是为什么按钮回发会触发验证,而不是另一个导致回发的控件?

        3
  •  1
  •   Euro Micelli    16 年前

    也许我们可以从顶部拿走它。你能回答这些问题吗?

    • 您正在使用.NET 2.0 SP1或更高版本吗?
    • 您的验证程序控件是在updatepanel内部还是外部?
    • 您是否在禁用javascript的情况下(不太可能)使用您的站点?

    注意你的验证器 必须 位于更新的UpdatePanel中,以便他们显示错误消息。如果它们不在更新的updatepanel中,则验证程序无法更改它们在浏览器上的外观。

        4
  •  0
  •   Per Hornshøj-Schierbeck    16 年前

    你有没有在你的updatepanel上调用update?

        5
  •  0
  •   Jorge Alves    16 年前

    不久前,它们被包含在.NETframework的更新中,所以是的,您在VS2008SP1中有它们。我发现了一个问题,customvalidators的服务器端方法两次触发,没有“邪恶”的效果,但其他方面它们工作正常。

    至于您遇到的具体问题,可能验证器不在updatepanel中,或者其他一些面板最终被发布的控件刷新,而不是您想要的控件?或者甚至有些验证组是在某个地方定义的,只有这些组最终被验证?不看代码很难说。

    但是确保您的验证器被显示是很容易的:myupdatepanel.update()将强制刷新。

        6
  •  0
  •   Abdu    16 年前

    最后,我使用了一个自定义验证器,并在代码背后进行了自己的验证,并设置了自定义验证器的错误消息。这样我就有了更大的灵活性,而且很管用。 使用ajax,感觉就像客户端验证。