проверка asp.net не работает с группой проверки внутри пользовательского элемента управления - PullRequest
2 голосов
/ 01 апреля 2019

Я использую пользовательский элемент управления (для номера телефона), и у меня есть некоторые проверки внутри него, и этот пользовательский элемент управления используется в нескольких местах в системе, и мне нужно передать группу 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" />

Q: Как заставить валидацию работать в любом месте, где использовался пользовательский элемент управления?

1 Ответ

1 голос
/ 01 апреля 2019

Вам нужно выражение DataBinding.Теперь вы просто добавляете строку <%= ValidationGroup %> в качестве имени группы ValidationGroup, а не переменную ValidationGroup.Это правильный путь

ValidationGroup='<%# ValidationGroup %>'

И вам нужно вызвать DataBind в Page_Load UserControl.

protected void Page_Load(object sender, EventArgs e)
{
    DataBind();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...