2009-11-05 130 views
0

我给了一个按钮一个名为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,它确实如此。我试图用updatepanel更新按钮无济于事。我怎样才能正确更改notetype?

+1

只有表单控件元素的'value'属性以表单发送(而<'input type =“image”/>'完全不发送)。你不能指望浏览器知道发布''notetype = none''是因为你将它指定为一个属性。这就是''将被用于。 Viewstate让你忘记了所有这些,直到你试图在客户端改变它,并且整个事情爆发。 – 2009-11-05 20:27:03

+0

发布此作为答案,我会接受它。我用隐藏的领域。 – Eric 2009-11-05 22:52:37

+0

@Eric:完成并完成。 – 2009-11-05 23:35:59

回答

1

只有表单控件元素的value属性随表单发送(并且对于<input type="image" />根本不发送任何内容)。您不能指望浏览器知道发送"notetype=none"仅仅是因为您将其指定为属性。这就是<input type="hidden" name="notetype" value="none" />将用于。

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

1

您的代码隐藏在客户端只能更改可发布的数据。自定义属性中的数据在回发后不会返回到服务器,因此它只会知道(通过视图状态)该属性在页面呈现时的价值。

+0

从那以后。除了我可以更改隐藏字段的值并且它有效的事实。 – Eric 2009-11-05 20:10:39

+0

只是不想使用隐藏的字段。 – Eric 2009-11-05 20:11:18