2009-07-22 64 views
0

好吧,我有一个与我使用的控件的主要问题。验证动态控件

我正在做的网站在结帐时使用了一些字段的自定义单位(他们决定马应该是的措施?),我们必须能够基于单位进行验证即它们可以有15到40只手(或者其他东西),它们是200 - 900厘米(这些数字完全是随机的)。

通常,这将通过服务器端验证进行验证,以允许我们处理当前单位,适当转换输入并与动态限制进行比较。

不幸的是,这些控件是在页面加载时动态呈现到页面上的,所以服务器端验证不会触发,因为它们在技术上并不存在回发。

为了避免这种情况,我打算采用另一种方法,就像使用标准的正则表达式验证程序,但是被黑掉以允许隐藏代码(我没有写它,但它们似乎可以工作)。

但是,这不是在页面上,所以我需要通过HttpContext或其他方法访问页面对象,以便从相关下拉列表中获取正确的单位,任何人都可以提出一种方法来做到这一点或者更好的方法来验证控件?

哦,是的,这是令人难以置信的复杂和随机。

干杯,埃德

+0

女王决定用手,我想她有一天在检查一匹马时她没有卷尺。 – 2009-07-22 10:56:47

+0

你谈论页面,onload。它是ASP吗?更准确=) – 2009-07-22 10:58:27

回答

3

有几个点,在这里做:首先,你可以动态生成的回传关控制,只要你有一个一致的ID重新生成它们在的开始每个回发事件,一旦你重新创建它们,ASP.NET将重新连接ViewState,然后触发你的回调方法。

接下来,您可以使用ASP.NET ajax框架在您的页面类上使用一些javascript调用静态方法(实质上它变成了一个迷你Web服务)。结帐this链接如何做到这一点。这可能会让你编写一些JavaScript来在服务器端调用一个验证方法。它只是静态的,所以你必须从你的客户端代码中传递你需要的所有数据。

最后,你可以有多个正则表达式验证器,每个单元一个,然后在单元字段的onchanged事件中使用一些javascript来启用/禁用正确的。我自己并没有这样做,但我相信你可以通过javascript轻松关闭验证器。 (结帐this链接)