前台代码:
- C# code
<script language="JavaScript"> $(document).ready(function () { $(".imgbutton").toggle(function () { $(this).removeClass("imgbutton").addClass("imgbutton2"); $(this).attr("value","1"); }, function () { $(this).removeClass("imgbutton2").addClass("imgbutton"); $(this).attr("value","0"); }); }); </script><body> <form id="form1" runat="server"> <div> <input type="button" id="t1p1z11" runat="server" class="imgbutton" value="0"> <asp:Button ID="Button1" runat="server" OnClick="Button1_Click" Text="Button" /> </div> </form></body>
后台代码:
- C# code
protected void Page_Load(object sender, EventArgs e) { if (!IsPostBack) { } } protected void Button1_Click(object sender, EventArgs e) { string b = this.t1p1z11.Value.ToString(); }
怎么后台取到的Value一直是"0"啊?前台已经能改变Value的值。
分不够了,要是有哪位大哥能指点下,我另外上号给分!!
------解决方案--------------------------------------------------------
你要分析下这个状态不能保存是不是和Viewstate有关,用reflector查看htmlinputbutton源码,继承关系:
htmlinputbutton---->htmlinputcontrol---->htmlcontrol,htmlinputcontrol的value属性get自base.Attributes["value"],base就是htmlcontrol,Attributes在htmlcontrol中定义为public AttributeCollection Attributes,而AttributeCollection是靠一个类型为StateBag的_bag变量保存的,StateBag的数据全部保存在ViewState中,依靠LoadViewState方法加载。
----------------------------------------------------------------------------------------------
找到原因后就知道为什么获取不到value值了吧