asp:LinkBut​​ton vs asp:Button。无效的回发或回调参数

时间:2018-04-18 17:33:08

标签: c# asp.net

我最近使用asp:LinkBut​​ton而不是asp:Button来表示一些CSS样式。

<asp:LinkButton ID="btnRegister" CssClass="btn btn-primary btn-lg btnSend" runat="server" OnClick="btnRegister_Click">Submit</asp:LinkButton>
<asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" />

我想知道当我点击btnRegister_Click时,我会收到错误

Invalid postback or callback argument.  Event validation is enabled using <pages enableEventValidation="true"/> in configuration or <%@ Page EnableEventValidation="true" %> in a page.  For security purposes, this feature verifies that arguments to postback or callback events originate from the server control that originally rendered them.  If the data is valid and expected, use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

Button1_Click上没有错误。

我知道禁用EnableEventValidation="false"会遇到一些安全问题。

  1. asp:LinkBut​​ton和asp:回发事件上的按钮有什么不同?
  2. 在这种情况下什么是最好和最安全的解决方案?
  3. 修改 加载和点击没有代码,我对我的设计师编码感到困惑:)) 我意识到有多种形式没有runat=server但具有method=postback属性。我明确表示已经解决了额外的形式和问题。

    为什么asp:linkbutton这样的行为不是asp:button

    的任何想法

    编辑2:请不要告诉我将EnableEventValidation更改为false,我不希望出现页面安全风险。另外,我加上

    <appSettings>
       <add key="ValidationSettings:UnobtrusiveValidationMode" value="None" />
    </appSettings>
    
    在web.config中

    并且无效。

2 个答案:

答案 0 :(得分:0)

if you bind gridview or datalist or repeater in page load, must do it:

 protected void Page_Load(object sender, EventArgs e)
    {
        if (!IsPostBack)
        {
        //all code in page_load
        }
     }

already You could do as the error message suggests and use the ClientScriptManager.RegisterForEventValidation method in order to register the postback or callback data for validation.

Or you could just set EnableEventValidation for the page to false.

答案 1 :(得分:-1)

选中state = { name: { value: "" } componentWillMount() { getTokens((value) => { if (value[0][1] === null) { alert('whoops') } else { this.props.UpdateUserData(value[0][1]).then(()=>{ console.log(this.props.User.userData) this.state.name.value = this.props.User.userData console.log(this.state.name.value) }) } }) } render() { return ( <View style={styles.container}> <Text style={styles.displayname}>{this.state.name.value} </Text> </View> ) }