我想用用ClientScriptManager.RegisterForEventValidation注册一个隐藏的字段和值,我与ClientScriptManager.RegisterHiddenField加入。我渲染事件过程中这样做。我没有得到任何错误,但ASP.NET 2.0不似乎验证领域。我可以改变值或删除使用Firefox和萤火虫整个字段客户机侧,并且像它应该ASP.NET不会引发错误。

从自定义Page类样品的编号:

protected override void Render(HtmlTextWriter writer)
{
    ClientScript.RegisterHiddenField("stuff", "things");
    ClientScript.RegisterForEventValidation("stuff", "things");
    base.Render(writer);
}

在隐藏的字段被添加到网页,但ASP.NET不验证在回发的字段或值。我缺少什么?

有帮助吗?

解决方案

我明白你正在尝试做的,但使用事件验证API是不是真的合适,因为它是用于验证由客户提出的是回发或回调事件是目标服务器控制是正确的,例如,要确保该点击是由正确的按钮处理,或检查上的下拉列表中的改变的事件不是针对最初不是“已知”到服务器的值。

在您的代码,就直接生成一个隐藏字段给客户端,因此不存在控制用于服务器上的回发引用。即使你使用的服务器页面上的隐藏字段控制,你仍然无法验证字段的值,因为控制不会产生回发事件(有没有办法让用户与其进行交互,因此没有用于服务器的事件来验证)。

的最简单的解决方案是使用视图状态存储字段的值,然后在回发验证该字段的值张贴等于存储在视图状态的值。 ViewState是默认所以它的存储不应该在客户端上更改数据安全的地方进行加密。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top