ASP.. NET文本框省略双引号后的字符串

本文关键字:字符串 NET 文本 框省 ASP | 更新日期: 2023-09-27 18:19:19

我已经添加了一个ASP。. NET文本框在我的页面,我确实有下一个和上一个按钮。我输入字符串,在文本框中说Hello "World"。我点击下一个按钮,这将显示审查页面(不可编辑),所有的数据都存储在会话。在此之后,我点击上一个按钮,它应该显示我的输入字段(编辑页)。在此期间,我正在从会话中获取数据,并将其显示回ASP。网框。

当我看到页面时,在双引号之后输入的东西正在从ASP中删除。网框。也就是说,我只能看到Hello

我的要求是,我应该允许用户输入双引号。

有办法解决这个问题吗??

ASP.. NET文本框省略双引号后的字符串

. NET不会删除文本框中的引号,所以我建议发布代码以供审查。

然而,在某些情况下,允许在输入字段中使用引号可能会触发请求验证,在这种情况下,您将看到一个关于潜在危险请求的非常具体的错误。

说到这里,应该检查允许引号的文本字段是否存在XSS攻击。

我重现你现在遇到的情况。它是由在value属性

中使用双引号引起的。

将与文本框中包含双引号的值冲突。所以你应该

将输出语法中的双引号改为单引号。

你可以试试下面的代码:

output.Write(string.Format("<input name='"{0}'" id='"{0}'" type='"text'" value=''{1}''{2}/>", UniqueID, Text, args));

我以前没有遇到过这个问题,用户在文本框中输入双引号是可以的。

你可以检查你是否有一些程序逻辑来过滤引号或调试你的代码

查找原因。下面是一个简单的测试代码。

<form id="form1" runat="server">
<div>
<asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
    <asp:Button
    ID="Button1" runat="server" Text="Button" onclick="Button1_Click" />
    <asp:Button ID="Button2" runat="server" Text="Button" onclick="Button2_Click" />
</div>
</form>
protected void Button1_Click(object sender, EventArgs e)
{
    Session.Add("KK",this.TextBox1.Text);
}
protected void Button2_Click(object sender, EventArgs e)
{
    this.TextBox1.Text = Session["KK"] as string;
}

如果你覆盖"Render",你也可以利用你输出到HtmlTextWriter,这为创建html提供了一些帮助。

虽然下面的示例肯定比您的方法更冗长,但它也将使输出知道正在发生什么,并允许htmltextwwriter(输出)插入值等。然后,htmltextwwriter将确保对值执行正确的转义。

  protected override void RenderContents(HtmlTextWriter output)
  {
        output.AddAttribute(HtmlTextWriterAttribute.Name, UniqueID);
        output.AddAttribute(HtmlTextWriterAttribute.Type, Text);
        output.AddAttribute(HtmlTextWriterAttribute.Value, Value);
        output.RenderBeginTag(HtmlTextWriterTag.Input);
        output.RenderEndTag();
  }

或者您可以使用System.Web.HttpUtility.HtmlEncode来避免字符值等问题。