asp.net验证不适用于用户控件内的验证组

时间:2019-04-01 10:39:04

标签: asp.net validation user-controls

我正在使用用户控件(用于电话号码),并且内部有一些验证,并且该用户控件在系统的多个位置使用,因此需要将ValidationGroup从其传递的位置传递给它是使用的,但这是行不通的(验证未触发),用户无需输入电话号码即可提交表单

注意:“提交”按钮已经具有相同的验证组

这是用户控件的代码

<div runat="server" ID="DivContainer" class="control-group">
<label class="control-label">Phone Number<span class="required">*</span></label>
<div class="row-fluid">
    <div class="span6">
        <asp:DropDownList runat="server" ID="DdlCountryPhoneCodes" CssClass="span12" />
    </div>
    <div class="span6">
        <input type="text" maxlength="50" cssclass="span12" runat="server" id="TxtPhoneNumber" />
    </div>
</div>
<div class="validation-message-wrapper">
    <asp:RequiredFieldValidator runat="server" CssClass="validation-message" ErrorMessage="Enter your phone number." ValidationGroup="<%= ValidationGroup %>" Display="Dynamic" ControlToValidate="TxtPhoneNumber" />
    <asp:CustomValidator runat="server" ID="CustomValidatorTxtPhoneNumber" ControlToValidate="TxtPhoneNumber" Display="Dynamic" CssClass="validation-message" ValidationGroup="<%= ValidationGroup %>" ClientValidationFunction="validatePhoneNumber" />
</div>

以下是用户控件用法的示例

<uc1:RecoveryPhoneNumber runat="server" ID="ucRecoveryPhoneNumber" ValidationGroup="ManageAccountGroup" />

问::如何在用户控件使用的任何位置进行验证?

1 个答案:

答案 0 :(得分:1)

您需要一个DataBinding表达式。现在,您只需添加字符串<%= ValidationGroup %>作为ValidationGroup名称,而不是变量ValidationGroup。这是正确的方法

ValidationGroup='<%# ValidationGroup %>'

您需要在UserControl的Page_Load中调用DataBind。

protected void Page_Load(object sender, EventArgs e)
{
    DataBind();
}