Jig*_*put 1 html c# asp.net visual-studio-2010 visual-studio
我通过使用 Jquery 的 Input sumbit type(Html tag) onclick 事件做了两个列表框和值交换。我收到错误页面 Eventvalidation=true 所以我在谷歌上搜索并通过使用解决这个问题
protected override void Render(System.Web.UI.HtmlTextWriter writer)
{
Page.ClientScript.RegisterForEventValidation(lsttolimo.UniqueID,this.ToString());
base.Render(writer);
}
Run Code Online (Sandbox Code Playgroud)
还没有找到解决方案。比在我使用 UpdatePanel 并在触发器中添加每个控件但仍然找不到解决方案之后
首先让我们了解EventValidation在 .NET 世界中的含义。
当您创建一些服务器控件时,应该将它们呈现为 HTML,以便它们可以在浏览器中显示。现在,考虑在 DropDownList 中有 10 个项目。这 10 个项目将作为<option>标签内的<select>标签呈现(它们被转换为 HTML 等效控件)。
现在,ASP.NET 加密这 10 个值,并将它们也添加到EventValidation隐藏字段中。这意味着您现在已将这 10 个值两次发送到浏览器。现在,每当有人回发表单时,ASP.NET 都会获取回发的值(回发这 10 个项目之一)。然后解密这 10 个加密值(现在它有 10 + 1 个值)。它会检查发布的值是否是 10 个项目之一。如果是,则 ASP.NET 确保一切正常。但如果不是,那么它就会明白有人试图愚弄它。
现在,假设您有一个国家/地区列表,并且您只接受来自 3 个国家/地区的用户,例如美国、英国和澳大利亚。但是,有人来到您的注册页面,了解 HTML 并创建另一个具有相同字段和相同国家/地区列表的表单。但这次他还将另一个国家的名称添加到您的列表中(比如伊朗)。
如果您没有打开 EventValidation,并且您没有明确检查该国家/地区,那么您只是被愚弄了接受伊朗作为有效国家/地区。这称为形式欺骗。
现在,由于您有两个列表,并且您交换了它们的值,当然,.NET 认为它被愚弄了。我建议您关闭 EventValidation(这是更简单的方法,但更容易出现安全问题)并自行检查。
要关闭事件验证,只需将其添加到您的 web.config 文件中:
<system.web>
<pages enableEventValidation="false"
</system.web>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
218 次 |
| 最近记录: |