代码之家  ›  专栏  ›  技术社区  ›  Eric

代码中的访问控制属性

  •  0
  • Eric  · 技术社区  · 15 年前

    我给了一个按钮一个名为notetype的属性。

     <asp:ImageButton ID="bttnSave" notetype="none" runat="server" ImageUrl="~/images/bttnSave.gif" onclick="bttnSave_Click" />
    

    我有一个来自不同按钮点击的函数,它将该变量设置为某种类型。

    function addnotes(Type,IncId,Acc,Wit,Claim,Inj,Prop,Media) {
        var bttnopenmodal = $get('<%=bttnopenmodal.ClientID %>');
        var bttnSave = $get('<%=bttnSave.ClientID %>');
    
        if (Type == 'Inc') {
            bttnSave.notetype = 'Inc';
    
        }
    
        bttnopenmodal.click();
        return false;
    }
    

    但是,在按钮的C代码中:

    protected void bttnSave_Click(object sender, ImageClickEventArgs e)
    {
        Response.Redirect(bttnSave.Attributes["notetype"]);
    }
    

    “保存”按钮的noteType的值仍然是“无”,即使我在javascript中更改了它。我甚至发出警报,确保它改变了NoteType,它做到了。我试图用更新面板更新按钮,但没有用。我怎样才能正确地更改那个notetype?

    2 回复  |  直到 15 年前
        1
  •  1
  •   Roatin Marth    15 年前

    只有 value 表单控件元素的属性与表单发布一起发送(和 <input type="image" /> 什么都不发送)。您不能期望浏览器知道发送 "notetype=none" 在post主体中,因为您将其指定为属性。就是这样 <input type="hidden" name="notetype" value="none" /> 将用于。

    viewstate会让你忘记所有这些,直到你试图在客户机中改变它的时候,整个事情都爆发了。

        2
  •  1
  •   James Conigliaro    15 年前

    您的代码隐藏将只接收客户端对可以发布的数据所做的更改。自定义属性中的数据在回发时不会被发送回服务器,因此它只知道(通过视图状态)该属性在呈现页面时的值。