问题:我需要在动态数据应用程序eApp中添加超链接到动态验证器验证摘要错误描述,它使用字段模板(定义不同的字段类型),实体模板(定义字段和文本的位置),过滤器(定义字段何时显示不同),以及页面模板,以动态生成完整表单(基于所选状态的不同)作为Edit.aspx自定义页面上的应用程序。
由于应用程序太长,因此让用户轻松找到验证错误发生的问题非常重要。
示例:如果抛出以下验证错误:
Requested Effective Date is required for Medicare Supplement Coverage (Applicant A).
添加一个超链接,跳转到导致错误的用户给出的字段或答案
我可能会离开,但我想我可以以某种方式使用BaseValidator.SetFocusOnError属性,它获取或设置一个值,该值指示在验证失败时焦点是否设置为ControlToValidate属性指定的控件。
如果无法在验证摘要中添加超链接,我可以更轻松地: - 添加部分#&每个验证说明的问题# - 提供链接以跳转到应用程序页面顶部的7个部分
Edit.aspx自定义页面上的ASP.NET代码,它告诉浏览器哪些动态数据在哪里:
<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" });
}
对所有代码感到抱歉。
如果您还有其他需要,请告诉我。