将条件requiredFieldValidators添加到c#asp.net中动态创建的表单中

本文关键字:动态 创建 表单 net c#asp 条件 requiredFieldValidators 添加 | 更新日期: 2023-09-27 17:58:22

好的,

我有一个完全呈现的动态表单(我不知道表单的内容,它是通过Web服务提供给我的)

我使用asp.net RequiredFieldValidator进行验证,因为我在这篇文章中读到,我们可以根据字段是否可见来动态地打开和关闭验证器具有CCD_ 2功能。

尽管现在我已经呈现了表单,但我在使用这个javascript时遇到了一些麻烦,因为我不想把它放在aspx文件中,(无论如何都不能控制它,因为表单是在代码后台从Web服务数据构建的…)

所以我查看了客户端ID,发现验证器的客户端ID就是它所呈现的跨度的ID

所以我试着在firebug中运行这个来测试我是否可以启用/禁用其中一个验证器,但这似乎是不可能的,jQueryspan元素没有启用它的属性。

ValidatorEnable($("#ContentPlaceHolderDefault_MasterWithNavContent_Poll_4_reqAnswer_373ac8b7_8da9_467b_b9b4_d586e45a7504"), false);

以及这个附带的html

<div class="question-container question-odd" id="ContentPlaceHolderDefault_MasterWithNavContent_Poll_4_question-373ac8b7-8da9-467b-b9b4-d586e45a7504">
    <div class="question-meta">
        <h3 class="validation-label">Which club have you visited?</h3>
        <span style="display: block; margin-bottom: 10px; margin-top: 5px;" class="error validation" id="ContentPlaceHolderDefault_MasterWithNavContent_Poll_4_reqAnswer_373ac8b7_8da9_467b_b9b4_d586e45a7504">Please fill out this field.</span>
    </div>
    <input type="text" class="answerswer-container text" id="ContentPlaceHolderDefault_MasterWithNavContent_Poll_4_answer_373ac8b7_8da9_467b_b9b4_d586e45a7504" name="ctl00$ctl00$ctl00$ContentPlaceHolderDefault$MasterWithNavContent$Poll_4$answer_373ac8b7_8da9_467b_b9b4_d586e45a7504">
</div>

有人知道我哪里错了吗?也许我要快速从服务器端ClientId跳到RFV渲染到的<span>?但它们看起来完全一样。希望有人能给我指明好的方向!

将条件requiredFieldValidators添加到c#asp.net中动态创建的表单中

也许更好的方法是遍历客户端的验证器数组(Page_Validators)并找到要禁用的验证器。

有关更多信息,请参阅此MSDN页面和此代码项目文章。

也许更合适的方法是

ValidatorEnable($("<%= reqAnswer.ClientID %>")[0], false);

使用<%= reqAnswer.ClientID %>可以避免对验证器的客户端ID进行猜测或硬编码。在jQuery $()之后添加[0]将获得实际的验证器DOM元素,而不是jQuery包装器。

[0] 的来源