【问题标题】:Request.Unvalidated has the wrong argument to find a nested TextBox in a formviewRequest.Unvalidated 在表单视图中查找嵌套文本框的参数错误
【发布时间】:2014-08-09 08:05:27
【问题描述】:

这是我第一次遇到验证文本框。我正在使用 MSDN (http://msdn.microsoft.com/en-us/library/hh882339(v=vs.110).aspx) 上描述的以下代码来禁用请求验证,然后手动检查未经验证的用户输入。我的 TextBox 嵌套在 formView 中,我的论点似乎不起作用。如何取消验证嵌套的文本框?我做错了什么?

protected void InsertButton_Click(object sender, EventArgs e)
    {
          var userComment = Request.Unvalidated(FormView3.FindControl("aboutTextBox")); 
        // Has the wrong arguments. How can I unvalidate the nested control?

        StringBuilder sb = new StringBuilder(HttpUtility.HtmlEncode(FormView3.FindControl("aboutTextBox")));
        // Selectively allow <b> and <i>
        sb.Replace("&lt;b&gt;", "<b>");
        sb.Replace("&lt;/b&gt;", "</b>");
        sb.Replace("&lt;i&gt;", "<i>");
        sb.Replace("&lt;/i&gt;", "</i>");
}

【问题讨论】:

  • 到目前为止,我已经能够使用它来查找控件: var userComment = Request.Unvalidated(HttpUtility.HtmlEncode(FormView3.FindControl("aboutTextBox")));但它不能正常工作,因为文本框仍在验证中,我收到此错误:从客户端检测到潜在危险的 Request.Form 值....
  • 我找不到任何关于如何使用 asp.net 4.5 的 Request.Unvalidated 取消验证嵌套文本框的说明

标签: c# asp.net validation asp.net-4.5


【解决方案1】:

要禁用请求验证,请在 .aspx 页面(第一行)的页面指令中添加此内容

ValidateRequest="false"

这在&lt;system.web&gt;下的web.config中

 <httpRuntime requestValidationMode="2.0"/>

然后尝试正常获取txtbox值

var userComment = ((TextBox)View1.FindControl("aboutTextBox")).Text;

通过关闭请求验证,您需要确保自己验证用户输入!

【讨论】:

  • 这将禁用所有请求的验证。这不是我想要完成的。我想使用 asp.net 4.5 的新功能 Request.Unvalidated 禁用页面上的一个特定控件。
  • 不要认为 Request.Unvalidated 将与服务器控件(网络表单)一起使用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多