代码之家  ›  专栏  ›  技术社区  ›  Raúl Roa

禁用单个控件的EventValidation,是否可能?

  •  12
  • Raúl Roa  · 技术社区  · 16 年前

    我知道这是一个非常有争议的话题,通常当您考虑将其作为一个解决方案时,您可能需要重新考虑您的UI逻辑。

    我知道我可以使用ClientScriptManager.RegisterForEventValidation通过验证。但是,我真的很想知道。是否可以删除单个控件的事件验证?有办法解决这个问题吗?

    我正在修改DropDownList,在渲染后从客户端进行修改。

    4 回复  |  直到 16 年前
        1
  •  3
  •   Bryan    16 年前

    对你的问题的简短回答是:不,没有办法做到这一点。必须对整个页面禁用EventValidation。

    如果需要在客户端添加所有值,那么无论如何都必须使用其他方法发送这些值,因为它们不会出现在服务器端控件中。那些值没有发布!

        2
  •  34
  •   Dale K    14 年前

    SupportsEventValidation属性不是为子类继承的,因此,如果您创建DropDownList的子类,不将该属性应用于该子类,并且在页面上使用该子类,则您将拥有一个不会触发事件验证的控件,即使在页面上启用了事件验证。

    public Class DynamicDropDownList : DropDownList
    {
    }
    

    http://msdn.microsoft.com/en-us/library/system.web.ui.supportseventvalidationattribute%28v=VS.110%29.aspx

        3
  •  4
  •   famousgarkin    12 年前

    设置属性 EnableViewState="False" 关于特定的元素。

    推理:如果您使用JavaScript在ASP.NET的控制之外更改此值,那么ViewState在这一点上只是在妨碍您。不要用它来控制。

        4
  •  3
  •   Podge    16 年前

        protected override void Render(HtmlTextWriter writer)
        {
            this.Page.ClientScript.RegisterForEventValidation(ddlRisk.ID, "a");
            this.Page.ClientScript.RegisterForEventValidation(ddlRisk.ID, "b");
            this.Page.ClientScript.RegisterForEventValidation(ddlRisk.ID, "c");
            base.Render(writer);
        } 
    
    推荐文章