代码中的访问控制属性

时间:2009-11-05 19:57:50

标签: c# .net asp.net javascript visual-studio

我给了一个名为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的值仍然是'none',即使我在javascript中更改它。我甚至警告确保它改变了notetype,它确实改变了。我尝试使用updatepanel更新按钮无济于事。我怎样才能正确地改变那种notetype?

2 个答案:

答案 0 :(得分:1)

您的代码背后只会对可以发布的数据进行客户端更改。自定义属性中的数据不会在回发后发送回服务器,因此它只会(通过视图状态)知道该属性在呈现页面时具有的值。

答案 1 :(得分:1)

只有表单控件元素的value属性与表单发送一起发送(对于<input type="image" />,根本不发送任何内容)。您不能指望浏览器知道仅仅因为您将其指定为属性而在帖子正文中发送"notetype=none"。这就是<input type="hidden" name="notetype" value="none" />将用于的目的。

Viewstate让你忘记这一切,直到你试图在客户端改变它并且整个事情爆发为止。