2011-06-03 87 views
1

我一直在寻找一个为什么这不起作用的原因,但我找不到一个。在我的asp.net应用程序中,我在c#中创建了一堆隐藏的输入,然后在将它们调用回服务器之前尝试在javascript中对它们进行修改。使用javascript更改输入值

我的C#代码:

hidden3 = new HtmlInputHidden(); 
    hidden3.ID = "total"; 
    hidden3.Value = index.ToString(); 
    this.Controls.Add(hidden3); 

我的javascript代码:

 mod = document.getElementById("total"); 
    mod.value = newVal; 

我可以打电话值恢复正常,但它不会改变。我还为原始值添加了警报,然后在更改值之后添加了警报,并且它们都显示正常。然而,代码是从来没有改变,所以当我拉值

要得到的价值回来,我用这个;

HtmlInputHidden hiddenControl = (HtmlInputHidden)FindControl("total"); 
+0

你打算如何“回电话”?你使用'Request [“total”],还是你动态地添加隐藏的输入,然后尝试从中提取值? – 2011-06-03 21:29:27

+0

也许你错过了它的回传。你能发布你的页面代码吗?问候 – 2011-06-03 21:18:12

回答

1

这些控件是动态创建的,它们必须在每次回发中创建。但是,这些应该在Page_Load之前,最好在Page_Init事件处理程序中构建。如果这些是在Page_Load中创建的,则视图状态已经被处理,控件不能从发布的值中设置。

+0

你能解释更多吗? – user776530 2011-06-03 21:32:23

+0

你在哪里创建这些控件? – 2011-06-03 21:35:53

+0

Page_Load,我使用我使用的表创建它们,因此我只需要查询数据库一次。 – user776530 2011-06-03 21:49:28

2

您是否已验证生成的输入标记为“总计”的ID?默认情况下,在Webforms中,实际的客户端标识以父级的Id(和一个分隔符)作为前缀;这有助于确保ID是唯一的。获取真实客户端Id的一种方法是从控件的ClientID属性中提取值,但只有在将其放入Controls集合后,才应该查看该值。

+1

布莱恩是对的。如果您使用的是ASP.NET 4.0,则可以设置ClientIDMode =“Static”,以便该ID保持为“总计” – Akhil 2011-06-03 21:18:39

+0

我可以使用alert获取值(document.getElementById(“total”)。value);但我会尽力解决 – user776530 2011-06-03 21:27:02