Добавьте гиперссылки в сводку динамической проверки данных, чтобы перейти к полю с ошибкой через SetFocusOnError

Проблема: мне нужно добавить гиперссылки к динамической проверке валидатора. Описание ошибок в динамическом приложении данных, eApp, которое использует шаблоны полей (определяет различные типы полей), шаблоны сущностей (определяет, куда идут поля и текст), фильтры (определяет, когда поля отображаются по-разному) и шаблоны страниц для динамического создания полной формы (в зависимости от выбранного состояния) в качестве приложения на пользовательской странице Edit.aspx.

Поскольку приложение очень длинное, важно, чтобы пользователь мог легко найти вопрос, по которому возникла ошибка проверки.

Пример: если выдается следующая ошибка проверки:

   Requested Effective Date is required for Medicare Supplement Coverage (Applicant A).

Добавьте гиперссылку, которая переходит на поле или ответ, данный пользователем, который вызывает ошибку

Возможно, я выключен, но я подумал, что мог бы каким-то образом использовать свойство BaseValidator.SetFocusOnError, которое получает или устанавливает значение, указывающее, установлен ли фокус на элемент управления, заданный свойством ControlToValidate, при сбое проверки.

Если добавление гиперссылок к сводке проверки невозможно, я мог бы упростить: - Добавить раздел № и вопрос № к каждому описанию проверки - Предоставить ссылки для перехода к каждому из 7 разделов в верхней части страницы приложения.

Код ASP.NET на пользовательской странице Edit.aspx, который сообщает браузеру, куда и куда направляются динамические данные:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
    <ContentTemplate>
        <asp:ValidationSummary ID="ValidationSummary1" runat="server" EnableClientScript="true"
            HeaderText="The following errors occured:" CssClass="DDValidator" />
        <company:DynamicValidator runat="server" ID="DetailsViewValidator" ControlToValidate="FormView1" Display="None" CssClass="DDValidator" />

        <asp:FormView runat="server" ID="FormView1" DataSourceID="DetailsDataSource" OnItemDeleted="FormView1_ItemDeleted" RenderOuterTable="false">
            <ItemTemplate>
                <table id="detailsTable" class="DDDetailsTable" cellpadding="6">
                    <asp:DynamicEntity runat="server" />

Под EntityTemplate страница MedSupLife_Section02.ascx определяет, где находятся динамические элементы управления, но не перечисляет ошибки проверки:

    1. Are you covered under Medicare Part A?
    <br/>If "YES", what is your Part A effective date?
    <asp:DynamicControl runat="server" DataField="MedPartAEffDate_A" OnInit="DynamicControl_Init" /> /
    <asp:DynamicControl runat="server" DataField="MedPartAEffDate_B" OnInit="DynamicControl_Init" />
    <br/>If "NO", what is your eligibility date?
    <asp:DynamicControl runat="server" DataField="MedPartAEligDate_A" OnInit="DynamicControl_Init" /> /
    <asp:DynamicControl runat="server" DataField="MedPartAEligDate_B" OnInit="DynamicControl_Init" />

Под страницей DynamicValidator.cs выложен прогресс проверки.

На странице шаблона поля DateTime_Edit.ascx определены обязательные поля, регулярные экспресс, динамические и пользовательские валидаторы:

  <asp:RequiredFieldValidator runat="server" ID="RequiredFieldValidator1" CssClass="DDControl DDValidator" ControlToValidate="TextBox1" Display="Static" Enabled="false" />
  <asp:RegularExpressionValidator runat="server" ID="RegularExpressionValidator1" CssClass="DDControl DDValidator" ControlToValidate="TextBox1" Display="Static" Enabled="false" />
  <asp:DynamicValidator runat="server" ID="DynamicValidator1" CssClass="DDControl DDValidator" ControlToValidate="TextBox1" Display="Static" />
  <asp:CustomValidator runat="server" ID="DateValidator" CssClass="DDControl DDValidator" ControlToValidate="TextBox1" Display="Static" EnableClientScript="false" Enabled="false" OnServerValidate="DateValidator_ServerValidate" />

В MedLifeApplication.cs определены валидаторы:

    public IEnumerable<ValidationResult> ValidateApplicant(ValidationContext validationContext, Applicant a)
    {
        if (ForMedCoverage)
        {
            if (!a.RequestedEffectiveDate.HasValue)
            {
                yield return new ValidationResult("Requested Effective Date is required for Medicare Supplement Coverage (Applicant " + a.Code + ").", new[] { "RequestedEffectiveDate_" + a.Code, "ForMedCoverage" });
            } 

Извините за весь код.

Позвольте мне знать, если вам нужно что-нибудь еще.

0 ответов

Другие вопросы по тегам