c# - 在 EWL 中,如何在页面中的任意位置显示自定义验证内容?

标签 c# validation web-applications enterprise-web-library

我有一个收集电子邮件地址的页面,提交表单后我会查看该电子邮件是否存在。如果是这样,用户将无法创建该实体。我不想显示正常的验证错误状态消息,而是想显示一个很好的段落,通过几个链接来解释情况。

我尝试创建该段落并使用 .visible = false 或 display:none 隐藏它,然后使其在传递给 AddTopValidationMethod 的方法中可见。这不起作用。

我知道我可以有 HTML 状态消息,但 1) 我认为这不会那么好,2) 我无法使用 EwfLink 构建我的链接 - 我必须手写一个 anchor 标签。

这里最好的解决方案是什么?

最佳答案

试试这个:

// Add the form item to the page.
var validationFailed = false;
myPanel.AddControlsReturnThis( myMod.GetEmailAddressTextFormItem( false, validationErrorNotifier: () => validationFailed = true, validationList: myPostBack ).ToControl() );

// Add the email-address-exists error placeholder to the page.
myPanel.AddControlsReturnThis(
  new ModificationErrorPlaceholder(
    new Validation(
      ( pbv, validator ) => {
        if( validationFailed )
          return;
        if( emailAddressExists( myMod.EmailAddress ) )
          validator.NoteErrorAndAddMessage( "The user will never see this." );
      },
      myPostBack ),
    errors => {
      if( !errors.Any() )
        return Enumerable.Empty<Control>();

      // Use any controls you want here!
      var link = EwfLink.Create( MyDestinationPage.GetInfo(), new TextActionControlStyle( "has a link" ) );
      return new Paragraph( new Control[] { "This sentence ".GetLiteralControl(), link, " in it.".GetLiteralControl() } ).ToSingleElementArray();
    } ) );

如果您希望解释性段落位于电子邮件地址表单项的上方,请将其验证添加到 BasicValidationList 中,您可以将其添加到回发对象中创建表单项后。

关于c# - 在 EWL 中,如何在页面中的任意位置显示自定义验证内容?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25508581/

相关文章:

c# - 使用事件记录是个好主意吗?

javascript - javascript ValidatorEnable 在 ASP.Net 4.0 中是否仍然支持?

laravel - 如何使用验证 Laravel 验证对象字符串?

android - Famo.us 网络平台是否支持 phonegap?

tomcat - Vaadin 网络应用程序停止响应,直到我清除浏览器数据或使用 Chrome 隐身模式

c# - java 的 transient 关键字的 C# 等价物是什么?

c# - 尝试将托管代码中的字符串返回到 C++

c# - 在 mvc3 上保存 null DateTime

c++ - 尝试了解输入验证循环

javascript - JavaScript 能否成为 Flash 和 Silverlight 的可行替代品?