ASP.NET Web Forms Prompt Validator
For those still using Web Forms and Microsoft’s validation framework, like yours truly - and I know you’re out there! -, it is very easy to implement custom validation by leveraging the CustomValidator control. It allows us to specify both a client-side validation JavaScript function and a server-side validation event handler.
In the past, I had to ask for confirmation before a form was actually submitted; the native way to ask for confirmation is through the browser’s confirm function, which basically displays a user-supplied message and two buttons, OK and Cancel. I wrapped it in a custom reusable validation control, which I am providing here:
1: [DefaultProperty("PromptMessage")]
2: public sealed class PromptValidator : CustomValidator
   3: {4: [DefaultValue("")]
5: public String PromptMessage { get; set; }
   6:  7: protected override void OnPreRender(EventArgs e)
   8:     {9: var message = String.Concat("\"", this.PromptMessage, "\"");
  10:  11: if ((this.PromptMessage.Contains("{0}") == true) && (this.ControlToValidate != String.Empty))
  12:         {13: message = String.Concat("String.format(\"", this.PromptMessage, "\", args.Value)");
  14:         }  15:  16: this.ClientValidationFunction = String.Concat("new Function('sender', 'args', 'args.IsValid = confirm(", message, ")')");
17: this.EnableClientScript = true;
  18:  19: base.OnPreRender(e);
  20:     }  21: }A sample usage without any target control might be:
1: <web:PromptValidator runat="server" PromptMessage="Do you want to submit your data?" ErrorMessage="!"/>
And if you want to specifically validate a control’s value:
1: <web:PromptValidator runat="server" PromptMessage="Do you want to accept {0}?" ErrorMessage="!" ControlToValidate="text" ValidateEmptyText="true"/>
When submitting your form, you will get a confirmation prompt similar to this (Chrome):