【问题标题】:How to display an error message within the form如何在表单中显示错误消息
【发布时间】:2015-06-19 07:15:13
【问题描述】:

我有以下 ASP.net 页面:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Tks.aspx.cs" Inherits="Dr.Tks" ValidateRequest="true" %>

<asp:TextBox ID="tbComments" ClientIDMode="Static" CssClass="tbTech" runat="server" TextMode="MultiLine" Columns="30" Rows="15"></asp:TextBox>
<asp:Button ID="SubmitForm" ClientIDMode="Static" runat="server" Text="Submit" OnClick="ValidateForm" CssClass="btnFancy orange logBtn btnLogIn lightLinks" UseSubmitBehavior="false" />

C#:

public void ValidateForm(object sender, EventArgs e)
{
    try
    {
        string strTheBody = HttpUtility.HtmlEncode(tbComments.Text);
    }
    catch (Exception)
    {
    }
}

如果我在上面的文本框中输入&lt;script...,我会收到以下错误:

Server Error in '/' Application.
--------------------------------------------------------------------------------
A potentially dangerous Request.Form value was detected from the client (tbComments="<script...").

如何在我输入时验证文本框,而不是显示来自 ASP.net 的默认错误消息(这对用户不友好)

【问题讨论】:

  • 查看这篇文章,了解一些可能解决您的问题的方法stackoverflow.com/questions/9130186/…
  • 这是你可以使用 Javascript/jQuery 的东西吗?
  • 如果他们禁用了这些功能,还希望包括服务器验证。

标签: c# asp.net


【解决方案1】:

您可以通过多种方式解决此问题以获得更好的用户体验。您可以使用 JavaScript、ASP.NET 验证器、禁用请求验证功能(不推荐 - 阅读此内容:Request Validation in ASP.NET - 仅在您想要允许标记时才这样做,否则是一个安全问题),或使用其他一些工具。

其中一个 ASP.NET 验证器可以解决您的问题,它是:RegularExpressionValidator。详情请访问:Types of Validation for ASP.NET Server Controls

请试试这个:

<asp:RegularExpressionValidator id="RegularExpressionValidator1"
ControlToValidate="tbComments"
ValidationExpression="^([A-Za-z]|[0-9]|_)+$"
Display="Static"
EnableClientScript="true"
ErrorMessage="Please enter valid string only"
runat="server"/>

这将发生在客户端,就像 javascript。

【讨论】:

  • 我试过了,当我输入无效字符时没有任何反应。
【解决方案2】:

在 .NET 4.5 中,您可以在 control 上设置 ValidateRequestMode="Disabled"

<asp:TextBox ID="tbComments" ValidateRequestMode="Disabled" ClientIDMode="Static" CssClass="tbTech" runat="server" TextMode="MultiLine" Columns="30" Rows="15"></asp:TextBox>

【讨论】:

    猜你喜欢
    • 2017-04-26
    • 1970-01-01
    • 2021-10-12
    • 1970-01-01
    • 2023-03-29
    • 1970-01-01
    • 2018-03-03
    • 2012-02-15
    • 1970-01-01
    相关资源
    最近更新 更多